آموزش رشته ها در سالیدیتی

در این آموزش با رشته ها در سالیدیتی آشنا می‌شویم و یاد می‌گیریم چطور رشته ها را تعریف، تبدیل، بررسی و با آن‌ها در قراردادهای هوشمند کار کنیم.

آموزش رشته ها در سالیدیتی

رشته ها در سالیدیتی آرایه هایی با اندازه متغیر از بایت های رمزگذاری شده به‌صورت UTF-8 هستند. در همین راستا، نوع داده ای bytes نیز یک آرایه با اندازه متغیر از بایت هاست. این دو نوع داده با استفاده از توابع string() برای تبدیل bytes به رشته و bytes() برای تبدیل رشته به bytes به راحتی قابل تبدیل به یکدیگر هستند.

این ویژگی در انجام عملیات روی رشته ها، مشابه آنچه در سایر زبان های برنامه نویسی دیده می‌شود، بسیار مفید است.
اما از آنجا که رشته ها به‌صورت UTF-8 رمزگذاری می‌شوند، اگر یک کاراکتر بیش از یک بایت را اشغال کند، کار با رشته ها و دستکاری آن‌ها پیچیده‌تر خواهد شد.

از آنجا که رشته ها در سالیدیتی نوعی آرایه محسوب می‌شوند، هنگام ارسال آن‌ها به توابع باید یکی از مودیفایرهای calldata یا memory را مشخص کرد. همچنین هنگام بازگرداندن رشته ها از توابع، باید حتماً از مودیفایر memory استفاده شود.

برای بررسی طول یک رشته، از تابع .length استفاده می‌شود:

این مقدار به معنای تعداد کاراکترهای موجود در رشته نیست، بلکه نشان‌دهنده طول آرایه بایتی آن است. کاراکترهای یونیکد (Unicode) ممکن است بیش از یک بایت فضا اشغال کنند.

برای دسترسی به یک کاراکتر از رشته:

به خاطر داشته باشید این روش فقط در صورتی درست کار می‌کند که رشته مورد نظر کاملاً از کاراکترهای ASCII تشکیل شده باشد. اگر کاراکترهای یونیکد چندبایتی مثل “你好” را استفاده کنید، کد دچار خطا می‌شود.

دریافت یک کاراکتر از رشته در سالیدیتی کمی پیچیده‌تر از زبان هایی مثل جاوااسکریپت یا پایتون است، چون باید یک آرایه رشته ای با طول ۱ تعریف کنیم و سپس کاراکتر مورد نظر را در آن قرار دهیم. کدی که در بخش قبل دیدید دقیقاً همین کار را انجام می‌دهد.

سالیدیتی از رشته های یونیکد پشتیبانی می‌کند:

نکته ای که ممکن است گمراه کننده باشد این است که در سالیدیتی می‌توان از “string” برای نمایش داده های هگزادسیمال هم استفاده کرد، به ویژه اگر از مبدل hex استفاده شود. مثلاً تبدیل داده هگزادسیمال “helloworld” به رشته ای با همین نام قابل انجام است.

از نسخه ۰.۸.۱۲ به بعد، الحاق رشته ها (string concatenation) با تابع string.concat() بسیار ساده شده است. در نسخه های قبل از آن، چنین تابعی وجود نداشت و باید از روش های دستی تر استفاده می‌کردید.

به این مطلب امتیاز دهید

راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.

آموزش پروژه محور طراحی سایت با پایتون و جنگو مختص بازار کار
  • انتشار: ۱۹ اردیبهشت ۱۴۰۴

دسته بندی موضوعات

آخرین محصولات فروشگاه

مشاهده همه

نظرات

بازخوردهای خود را برای ما ارسال کنید