Menu
Coddy logo textTech

קריאה וכתיבה של מצב

חלק מהיחידה יסודות במסלול ה-Solidity של Coddy. שיעור 27 מתוך 53.

פונקציית view יכולה לקרוא את מצב החוזה, אך אינה יכולה לשנות אותו. אי אפשר לסמן פונקציה שכותבת למצב כ־view או כ־pure. הפרידו בין פונקציית getter שקוראת ערך לבין פונקציית setter שמשנה אותו, כדי שמטרתה של כל פונקציה תהיה ברורה.

הצהירו על כך בהיקף החוזה:

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

השתמשו בכך בתוך הפונקציה main שסופקה:

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

setValue כותבת למשתנה המשותף המאוחסן. readValue היא view כי היא מחזירה את המשתנה הזה בלי לשנות אותו. main גם כותבת בעקיפין באמצעות קריאה ל-setValue, לכן בכותרת שלה אין משנה view או pure.

אי אפשר לסמן פונקציה שכותבת למצב החוזה כ-view.

challenge icon

אתגר

קל

הכרז על המצב level, על פונקציית setter בשם setLevel ועל פונקציית getter מסוג view בשם getLevel. על main להגדיר את level לערך nextLevel שסופק, ואז להדפיס את תוצאת ה-getter.

הבדיקות מעבירות ארגומנטים ל-main בסדר הזה: uint256 nextLevel. כל בדיקה מתחילה עם מצב חוזה חדש.

השתמש ב-console.log עבור הפלט המבוקש. הדפס רק את הערכים המבוקשים, אחד בכל שורה, ללא תוויות נוספות אלא אם המשימה מציינת אותן.

נסו בעצמכם

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
    function main(uint256 nextLevel) external  {
        // כתבו כאן את הפתרון שלכם.
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Solidity אונליין