Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

قراءة حالة العقد وكتابتها

جزء من قسم الأساسيات في رحلة 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 للعرض هو 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اختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ Solidity