آرایه های تو در تو در عمل به ندرت مورد استفاده قرار میگیرند، اما به منظور کامل بودن، آنها را در اینجا توضیح میدهیم.
آموزش آرایه های تو در تو در سالیدیتی
همانطور که از نام آن پیداست، آرایه های تو در تو به آرایه هایی گفته میشود که درون یک آرایه دیگر قرار دارند.
در این مثال، تابع یک شبکه مستطیلی را دریافت میکند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
contract ExampleContract { function containsAThree(uint256[][] calldata nestedArray) public pure returns (bool) { for (uint256 i = 0; i < nestedArray.length; i++) { for (uint256 j = 0; j < nestedArray[i].length; j++) { if (nestedArray[i][j] == 3) { return true; } } } return false; } } |
در اینجا این کد در Remix در حال اجرا است.
شما همچنین میتوانید یک آرایه یکبعدی از یک آرایه دوبعدی استخراج کنید.
1 2 3 4 5 6 7 8 9 10 |
contract ExampleContract { // [[1,2],[3,4],[5,6]] به [1,2] تبدیل میشود function getRow(uint256[][] calldata nestedArray) public pure returns(uint256[] memory) { return nestedArray[0]; } } |
1 2 3 4 5 6 7 8 9 10 11 |
contract ExampleContract { // پذیرفته شده: [[1,2],[3,4],[5,6]] // رد شده: [[1,2,3],[4,5,6]] function fixedSize(uint256[2][3] calldata nestedArray) public pure returns (uint256) { return 0; // فقط به منظور امکان کامپایل } } |
1 2 3 4 5 6 7 8 9 10 11 12 |
contract ExampleContract { // پذیرفته شده: [[1,2],[3,4],[5,6]] -> مقدار 6 را باز میگرداند function getLast(uint256[2][3] calldata nestedArray) public pure returns (uint256) { return nestedArray[2][1]; // nestedArray[2] -> [5,6] سپس آیتم شاخص 1 را میگیرد -> 6 } } |
دقیقاً مانند آرایههای یکبعدی، اگر به ناحیهای خارج از محدوده دسترسی پیدا کنید، تراکنش برگشت خواهد خورد.
توجه داشته باشید که آرایههای تو در تو در عمل بسیار کم استفاده می شوند. اگر احساس میکنید که میخواهید این بخش را نادیده بگیرید، آزاد هستید.
امیدوارم آموزش آرایه های تو در تو (Nested Arrays) در سالیدیتی مورد توجه شما قرار گرفته باشد.
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۱۰ اردیبهشت ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره آموزش Go
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس