انجمن توسعه قرارداد هوشمند

جلسه ششم (اسلاید‌ها و بقیه منابع)

جلسه ششم

در جلسه ششم این دوره معرفی زبان برنامه نویسی سالیدیتی آغاز میگردد. در ابتدا در زمینه ساختار فایل و نحوه تعیین ورژن کامپایلر توضیحاتی ارائه می گردد، سپس انواع داده های مورد استفاده در زبان سالیدیتی مورد بررسی قرار میگیرد. در ادامه شیوه های کنترل خطا معرفی می گردد، توابع و مادیفایرها شرح داده میشوند و در پایان مباحثی در زمینه توضیح نویسی در بین خطوط کدهای برنامه (کامنت) ارایه میگردد.


Youtube

اسلاید‌های جلسه ششم: Blockchain and Solidity (Session 6) (4.0 مگابایت)

منابع مطالعه بیشتر:

8 Likes

سلام
اگر من درست متوجه شده باشم گفته شد که دستور push به اخرین خانه مقدار دهی می کند. در عکس یک بار مقدار (۲) داده شده و در خط بعدی این مقدار رو عوض شده و برابر با (۳) هست. چه دلیلی داره اول به یک خانه یک مقداری بدهیم و بعد در خط بعدی برنامه اون مقدار رو عوض کنیم؟
ممنون

سلام. Push مقدار مورد نظر را در آرایه قرار میده. دراینجا در خط اول عدد 2 و خط بعدی عدد 3 را در آرایه Myarray قرار می‌دهد بدین صورت
2=[0] myarray
وmyarray[1]=3
میشود

تو ویدیو گفته شد دستور push مقدار رو به خانه اخر اون ارایه اضافه می کنه . به عنوان مثال اگر ارایه Myarray دارای 4 خانه باشد دستور push مقدار ما رو در خانه 4 ارایه myarray قرار می دهد.
نکته اینجاست که که طبق اموزش push مقدار رو فقط به خانه اخر ارایه می ده

متد push برای ارائه های نامحدود استفاده میشه. همونجور که myarray تعدادش مشخص نیست. حالا وقتی میگه خونه آخر یعنی اینکه اگر الان ارائه 3 تا عضو داره دیتای جدید میره خونه چهارم که خونه آخر هست.

1 Likes

پس در واقع دستور push یک خانه به ارایه ما اضافه می کنه و اون مقدار رو به اون خانه جدید می ده؟

بله درسته
فکر کنید در انتها اون ارایه فضای زیادی وجود داره و هربار که متد پوش استفاده میشه مقدار مورد نظر در اونجا قرار میگیره
در واقع اضافه میشه بهش

1 Likes

سلام، منظور از خانه آخر آرایه در ویدئو ، ساخت یک خانه جدید و اضافه کردن محتوا به اون خونه هست، اگر اینطور که شما گفتین من توی ویدئو من توضیح دادم، حق با شما هست کمی گنگ و نامفهوم توضیح داده ام. عذرخواهی میکنم

1 Likes

سلام خسته نباشین
دو تا سوال دارم یک اینکه تفاوت دستور address.transfer رو با address.send متوجه نشدم تو فیلم توضیح داده نشد
و سوال دیگم اینه که منظور از arbitrary message call چیه؟ (داخل توضیحات address.call هستش)

در اسلایدی که enum درس داده شد ما تو خط اول یه enum تعریف کردیم به اسم FreshJuiceSize که سه تا حالت small & Medium & Large داره. دو خط بعدی رو من متوجه نمیشم
اون خطی که نوشتیم FreshJuiceSize choice; خود “choice” چیه؟ متغییره؟چرا تعریفش کردیم؟ و اصلا چرا با این فرمت دستوری؟
در تصویر بعدی هم که از سایت solidity example گرفتم منظور از اون دستور رو نمیفهم
Satatus Public status;
ما با این دستور داریم چیکار میکنیم؟ اون status که با حروف کوچیک نوشتیم چی هست؟ چرا باید تعریف بشه؟ فرقش با اون یکی Status چیه؟


توصیه میشه که از address.transfer استفاده بشه
تفاوت در اینه هنگام استفاده از transfer زمانی که به اررور خاصی میخورید یک exception بر میگردونه
اما در هنگام استفاده از send در صورت برخورد با ارور فقط مقدار false برمیگردونه و شما باید در کدتون value رو چک کنید

2 Likes

choice متغیری از نوع enum تعریف شده است
فرمت دستوری که استاندارد سالیدتیه دیگه :slight_smile:
و اینکه چرا از enum استفاده میشه یه دلیلش اینه خوانایی کد شما رو بالا میبره

Status یک enum است که حالت های درون کد رو پذیرفته
status متغیری از نوع Status است که با حالت های تعریف شده داخل enum مقدار میپذیرد

3 Likes

من متوجه نشدم یعنی چی exception برمیگردونه؟
و منظورتون از چک کردن value چیه؟

من سرچ کردم متوجه شدم چیه داستان اینجا میگم تا شاید بدرد بقیه هم بخوره
ما در واقع با دستور Enum یه DataType درست میکنیم که میشه همون Status
حالا ما باید بعدش یه متغییر درست کنیم که این مقادیر رو بهش اختصاص بدیم مثل دستورای دیگه که برای تعریف یه متغییر اول باید DataTypeش رو مشخص کنیم (مثلا مینوشتیم uint public x) اینجا مینویسیم Status public status

2 Likes

سلام و احترام
در صورتی که از Send استفاده کنیدو مقدار به ولت مقصد منتقل شود مقدار true بر میگرداند و در عیر این صورت اگر به هر دلیلی موفق نشه مقدار false بر میگرداند و شما با چک کردن خروجی این تابع می توانید تصمیم لازم را بگیرید و لی در حالت ترنسفر exception برگردانده می شود

1 Likes

سلام ممنون
من در جایی خوندم که پیشنهاد میشه فقط از transfer استفاده بشه ، شما اطلاعی داریم در این مورد؟

سلام
سرچ کردم یه جا نوشته بود از لحاظ مقدار gas مصرفی یکی هستن ولی اگه بخواین درباره ی دلایل اضافه ی دیگری اطلاع داشته باشیم از transfer استفاده میکنیم
این هم خود متنش :
If you are curious about the reasons for adding a transfer you may follow an original discussion about the feature.
(چون از لحاظ gas هم یکی هستن پس transfer پیشنهاد میشه)
یجا دیگه آورده بود
می تونی کل فرآیند transfer رو با این دستور ببینی
متن :
Suggestions for the name: transfer (sounds safer because transfer usually asks you to watch the whole process)

1 Likes

دمت گرم از اطلاع رسانیت

1 Likes

خواهش می کنم :green_heart: امیدوارم مفید بوده باشه
برای اطلاعات کامل تر میتونی به لینک زیر بری جوابا رو ببینی

سلام تو دقیقه ی 12جلسه که در مورد اختصاص حافظه صحبت میشه یه جایی دکتر اسکندری میگن یه جا بنویسیم یه حالته یه جا ننویسیم یه حالت دیگه ، منظور دقیقشون از یه جا نوشتن چیه؟؟