در این آموزش با رشته ها در سالیدیتی آشنا میشویم و یاد میگیریم چطور رشته ها را تعریف، تبدیل، بررسی و با آنها در قراردادهای هوشمند کار کنیم.
آموزش رشته ها در سالیدیتی
رشته ها در سالیدیتی آرایه هایی با اندازه متغیر از بایت های رمزگذاری شده بهصورت UTF-8 هستند. در همین راستا، نوع داده ای bytes
نیز یک آرایه با اندازه متغیر از بایت هاست. این دو نوع داده با استفاده از توابع string()
برای تبدیل bytes
به رشته و bytes()
برای تبدیل رشته به bytes
به راحتی قابل تبدیل به یکدیگر هستند.
این ویژگی در انجام عملیات روی رشته ها، مشابه آنچه در سایر زبان های برنامه نویسی دیده میشود، بسیار مفید است.
اما از آنجا که رشته ها بهصورت UTF-8 رمزگذاری میشوند، اگر یک کاراکتر بیش از یک بایت را اشغال کند، کار با رشته ها و دستکاری آنها پیچیدهتر خواهد شد.
از آنجا که رشته ها در سالیدیتی نوعی آرایه محسوب میشوند، هنگام ارسال آنها به توابع باید یکی از مودیفایرهای calldata
یا memory
را مشخص کرد. همچنین هنگام بازگرداندن رشته ها از توابع، باید حتماً از مودیفایر memory
استفاده شود.
برای بررسی طول یک رشته، از تابع .length
استفاده میشود:
1 2 3 4 5 6 7 8 9 |
function stringLength( string memory input ) public pure returns (uint256) { return bytes(input).length; // input.length won't work } |
این مقدار به معنای تعداد کاراکترهای موجود در رشته نیست، بلکه نشاندهنده طول آرایه بایتی آن است. کاراکترهای یونیکد (Unicode) ممکن است بیش از یک بایت فضا اشغال کنند.
برای دسترسی به یک کاراکتر از رشته:
1 2 3 4 5 6 7 8 9 10 11 |
function characterOfString( string memory input, uint256 index ) public pure returns (string memory) { bytes memory char = new bytes(1); char[0] = bytes(input)[index]; return string(char); } |
به خاطر داشته باشید این روش فقط در صورتی درست کار میکند که رشته مورد نظر کاملاً از کاراکترهای ASCII تشکیل شده باشد. اگر کاراکترهای یونیکد چندبایتی مثل “你好” را استفاده کنید، کد دچار خطا میشود.
دریافت یک کاراکتر از رشته در سالیدیتی کمی پیچیدهتر از زبان هایی مثل جاوااسکریپت یا پایتون است، چون باید یک آرایه رشته ای با طول ۱ تعریف کنیم و سپس کاراکتر مورد نظر را در آن قرار دهیم. کدی که در بخش قبل دیدید دقیقاً همین کار را انجام میدهد.
سالیدیتی از رشته های یونیکد پشتیبانی میکند:
1 2 3 4 5 |
contract Message { // no need for a getter function, this is public // note the "unicode" modifier string public message = unicode"你好👋ℝ𝔸ℝ𝔼𝕊𝕂𝕀𝕃𝕃𝕊"; } |
1 2 3 4 5 6 7 8 9 10 11 |
contract HexData { // not a string! bytes hexData = hex"68656C6C6F776F726C64"; // returns "helloworld" function getMessage() public view returns (string memory) { return string(hexData); } } |
از نسخه ۰.۸.۱۲ به بعد، الحاق رشته ها (string concatenation) با تابع string.concat()
بسیار ساده شده است. در نسخه های قبل از آن، چنین تابعی وجود نداشت و باید از روش های دستی تر استفاده میکردید.
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۱۹ اردیبهشت ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++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
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس