Menu
Coddy logo textTech

Zustand lesen und schreiben

Teil des Abschnitts Grundlagen der Solidity-Journey von Coddy. Lektion 27 von 53.

Eine view-Funktion darf den Vertragszustand lesen, ihn aber nicht ändern. Eine Funktion, die den Zustand schreibt, kann nicht als view oder pure gekennzeichnet werden. Trenne einen Getter, der einen Wert liest, von einem Setter, der ihn ändert, damit der Zweck jeder Funktion klar ist.

Deklariere dies auf Vertragsebene:

uint256 stored;
function setValue(uint256 n) internal {
    stored = n;
}
function readValue() internal view returns (uint256) {
    return stored;
}

Verwende es innerhalb der bereitgestellten main-Funktion:

setValue(18);
console.log(readValue());

setValue schreibt die gemeinsam genutzte gespeicherte Variable. readValue ist view, weil es diese Variable zurückgibt, ohne sie zu ändern. main schreibt ebenfalls indirekt, indem es setValue aufruft, daher enthält sein Funktionskopf keinen view- oder pure-Modifikator.

Eine Funktion, die den Zustand des Vertrags schreibt, kann nicht als view markiert werden.

challenge icon

Aufgabe

Einfach

Deklariere den Zustand level, einen Setter setLevel und einen View-Getter getLevel. main muss level auf den übergebenen nextLevel setzen und anschließend das Ergebnis des Getters ausgeben.

Die Tests übergeben Argumente an main in dieser Reihenfolge: uint256 nextLevel. Jeder Test beginnt mit einem frischen Vertragszustand.

Verwende console.log für die angeforderte Ausgabe. Gib nur die angeforderten Werte aus, jeweils einen pro Zeile, ohne zusätzliche Bezeichnungen, sofern die Aufgabe dies nicht vorgibt.

Probier es selbst

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
    function main(uint256 nextLevel) external  {
        // Schreibe deine Lösung hier.
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Solidity-Playground