مصفوفات التخزين
جزء من قسم الأساسيات في رحلة Solidity على Coddy. الدرس 38 من 53.
المصفوفة الديناميكية المُعلنة على مستوى العقد تكون في مساحة التخزين. استخدم push(value) لإضافة عنصر، وpop() لإزالة العنصر الأخير. يؤدي استدعاء pop على مصفوفة فارغة إلى التراجع عن التنفيذ. يتغير طولها عند إضافة القيم أو إزالتها.
أعلن عن هذا على مستوى العقد:
uint256[] values;استخدمه داخل الدالة main المقدمة:
values.push(6);
values.push(15);
values.pop();
console.log(values.length);
console.log(values[0]);تبدأ المصفوفة فارغة في هذا الاختبار. ينشئ الاستدعاءان push عنصرين، ويزيل pop العنصر الثاني. يبقى العنصر الأول ستة. يؤدي تحديث مصفوفة التخزين إلى تغيير حالة العقد، لذلك لا يمكن أن تكون main من نوع view.
يغيّر push وpop مصفوفة تخزين ديناميكية عند نهايتها.
التحدي
سهلصرّح عن مصفوفة تخزين ديناميكية من النوع uint256 باسم values. ادفع a وb وc، وأزل العنصر الأخير، ثم اطبع length والقيمة الأخيرة المتبقية.
تمرّر الاختبارات الوسائط إلى main بهذا الترتيب: uint256 a، uint256 b، uint256 c. يبدأ كل اختبار بحالة عقد جديدة.
استخدم console.log للإخراج المطلوب. اطبع القيم المطلوبة فقط، قيمة واحدة في كل سطر، من دون تسميات إضافية ما لم تحدد المهمة ذلك.
جرّب بنفسك
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 a, uint256 b, uint256 c) external {
// اكتب حلك هنا.
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2المتغيرات والأنواع
الأعداد الصحيحة غير الموقعةالمدخلات والمخرجاتالأعداد الصحيحة الموقعةالقيم المنطقيةالسلاسل النصية في الذاكرةبطاقة الملف الشخصي5الدوال
معاملات الدوالإرجاع القيمالدوال النقيةاستدعاءات الدوال المساعدةالحسابات القابلة لإعادة الاستخدام8المصفوفات
المصفوفات ثابتة الحجممصفوفات الذاكرة الديناميكيةمصفوفات التخزينالتكرار عبر المصفوفاتملخص المصفوفاتتدرّب بنفسك: Playground لـ Solidity