COMPΞZ 🧬
خب به احتمال قوی من دیگه هیچ پاداشی از فعالیتهام توی فارکستر نخواهم گرفت. 😁
هزاران مانع و بی عدالتی، خب اینم روش! جهنم و درک! 👊🏼😎 هیچ اهمیتی نداره واسم.
میدونم اینا کسانی رو که مدام میرن تو اسپیسها پشت سر من حرف میزنن که کامپز زیادی بزرگ شده زیادی رشد کرده رو خوشحال میکنه! به عمد دارم میذارم که دهن امثال شمارو بعداً صاف کنم! من که میدونم از کجا دارم میخورم نکتبای بدبخت حسود! 😐 همینکه هیچوقت آدم حسابتون نکردم حسابی آتیشتون زده! با این چیزا هم یکم شاد باشید چون شادی برای شما بیش از این نیست. 😎😉
👍8🔥2
COMPΞZ 🧬
میدونم اینا کسانی رو که مدام میرن تو اسپیسها پشت سر من حرف میزنن که کامپز زیادی بزرگ شده زیادی رشد کرده رو خوشحال میکنه! به عمد دارم میذارم که دهن امثال شمارو بعداً صاف کنم! من که میدونم از کجا دارم میخورم نکتبای بدبخت حسود! 😐 همینکه هیچوقت آدم حسابتون…
این دسته افراد منو واقعاً نشناختن هنوز! احمق بدبخت من فارکستر نباشه خودم یه شاهکستر میسازم! برای کی داری خودتو جر میدی آخه بیچاره. 😁 من یه سازندم مثل تو بدبخت نیستم که بشینم از اینو اون پاداش گدایی کنم من هدفم پاداش دادنه! زمین تا آسمون با چیزی که تو مغز تو هست فرق میکنه.
❤6🔥3
COMPΞZ 🧬
این دسته افراد منو واقعاً نشناختن هنوز! احمق بدبخت من فارکستر نباشه خودم یه شاهکستر میسازم! برای کی داری خودتو جر میدی آخه بیچاره. 😁 من یه سازندم مثل تو بدبخت نیستم که بشینم از اینو اون پاداش گدایی کنم من هدفم پاداش دادنه! زمین تا آسمون با چیزی که تو مغز…
اینا همونایی هستن که در زمان سوپر ریر برای ویتالیک و دن رومرو برای توپیدن من نامه نوشته بودن! هنوزم خندم میگیره به این کارای عجیب غریبشون! یه مشت نادون، احمق! ضعیف که پشت صد جور شناسههای عجیب غریب صد جور شخصیت از خودشون نشون میدن! نه پایداری شخصیتی دارن، نه شعور نه ادب هیچ چیزی جز پول رو نمیشناسن! شماها آدم نیستید که آخه! رشد کردن هم کار آدمه نه امثال شما کفتارهای بی صفت.
زمانی میرسه که بازم حمایت نیاز خواهید داشت...😉 با بد کسی در افتادین! خیلی چیزا به من چسبوندین اما از همش گذشتم! قضاوتهای زیادی کردین ساکت شدم! فحش دادین نفرین کردین چیزی نگفتم! اما شک نکنید رو سیاهی برای شماست نه من! چون من نون تلاشمو میخورم.
زمانی میرسه که بازم حمایت نیاز خواهید داشت...😉 با بد کسی در افتادین! خیلی چیزا به من چسبوندین اما از همش گذشتم! قضاوتهای زیادی کردین ساکت شدم! فحش دادین نفرین کردین چیزی نگفتم! اما شک نکنید رو سیاهی برای شماست نه من! چون من نون تلاشمو میخورم.
💯8🔥1
دو روز پیش یکی از دوستان میگفت باز پشت سرت توی X دارن اسپیس میزنن حرف درست میکنن! اینبار رفتن میگن کامپز فریمهاش زیادی دیده میشه نباید نون ببره! ببین طرز فکر رو! حالا چون میدونید این روزا فارکستر داره برای توسعهدهندهها پاداش میده... بابا شماها دیگه واقعاً مریضید انگار من به لطف اینا دارم تلاش میکنم! 😂 خیلی خب! هیچوقت هیچ کدومشونو ندیدم هیچوقت با هیچ کدومشون تعاملی نداشتم! چون هیچ منفعتی برای جامه و دیگران ندارن!
توصیم اینه، اگه میخوای از خودت و دیگران راضی باشی؛ روی ساختن خودت تلاش کن! من هم میتونم مثل شما نفرتانگیز و حسود باشم اما این ذات من نیست! اون شمایید و به همون روش هم به هیچ جایی نخواهید رسید. 😉 تمام شد رفت و دیگه راجع به این مسائل هزاران اسپیس هم بزنید من نظرم و هدفم مشخصه! مهم نیستید. ☺️
توصیم اینه، اگه میخوای از خودت و دیگران راضی باشی؛ روی ساختن خودت تلاش کن! من هم میتونم مثل شما نفرتانگیز و حسود باشم اما این ذات من نیست! اون شمایید و به همون روش هم به هیچ جایی نخواهید رسید. 😉 تمام شد رفت و دیگه راجع به این مسائل هزاران اسپیس هم بزنید من نظرم و هدفم مشخصه! مهم نیستید. ☺️
👏4❤2👍2🔥2
ایردراپهای سولانا به زودی به فارکستر میان؛ سعی کنید یک حساب بر مبنای شبکهٔ سولانا روی WC تأیید کرده باشید.
https://warpcast.com/v/0xba96903f
https://warpcast.com/v/0xba96903f
Farcaster
@v on Farcaster: "Solana airdrops are coming to ..."
Solana airdrops are coming to Farcaster users
Remember to connect your Solana wallets in Settings > Verifiied Addresses to qualify.
Remember to connect your Solana wallets in Settings > Verifiied Addresses to qualify.
👍3
گفتم که هر غلطی هم کنن باز من یه سازندم... ببینیم کی پاداش میگیره کی پاداش میده.
https://warpcast.com/dwr.eth/0xcd018973
همه چیز به وقتش! 😉
https://warpcast.com/dwr.eth/0xcd018973
همه چیز به وقتش! 😉
Warpcast
Dan Romero on Warpcast
For developers: Airdrop Offers
If you're a developer that's interested in doing a targeted airdrop to Farcaster users, please reach out to @linda.
Here's a demo of the flow we did today with @tldr and @bracky.
As a developer you get to choose:
- Who to…
If you're a developer that's interested in doing a targeted airdrop to Farcaster users, please reach out to @linda.
Here's a demo of the flow we did today with @tldr and @bracky.
As a developer you get to choose:
- Who to…
👏2
COMPΞZ 🧬
گفتم که هر غلطی هم کنن باز من یه سازندم... ببینیم کی پاداش میگیره کی پاداش میده. https://warpcast.com/dwr.eth/0xcd018973 همه چیز به وقتش! 😉
این ایردراپ bracky هم اولین ایردراپی بود که هفته پیش قول داده بودن.
بررسی کنید توی کیفهاتوت باید یه چیزی تزریق شده باشه.
بررسی کنید توی کیفهاتوت باید یه چیزی تزریق شده باشه.
👍5
اگه جزو اونایی هستی که تازه تو این سه ماههٔ آخر سال وارد دنیای وب۳ و مخصوصاً فارکستر شدی؛ یا حتی اگه قبلاً یه جاهایی اشتباه رفتی ولی حالا فهمیدی که درست فعالیت کردن چقدر مهمه! باید بگم: خوش به حالت! 😉 پارسال که همین موقعها بود من وارد خود فارکستر شدم به همهٔ اعضای کانال (قبل از اینکه کانال قبلی رو حذف کنم) گفتم که من یه مدت آزمایش میکنم و بعد ننیجش رو میگم.
حالا چرا خوش به حالت؟ چون:
⚡️سابقهت هنوز تازهست؛ حتی اگه قبلاً اشتباهی هم کردی، هنوز وقت جبران هست و میتونی مسیرت رو از همین حالا درست بسازی.
⚡️سال قبل من داخل جامعهٔ فارسی فعال نبودم که بتونم به عنوان منتور کنار شماها باشم، اما امسال اینجا هستم و قراره باهم پیش بریم.
⚡️پارسال همه چیز حالت آزمایشی داشت… ولی امسال؟ همه چیز جدیه!
پس اگه آمادهای که هوشمند، خلاق و درست پیش بری، بدون که زمانش همین حالاست! فرض کن صفر صفر هستی! برای اینکه درست پیش بریم من هم حساب کتابم رو صفر در نظر میگیرم چه سود چه ضرر! فرض میکنم نه سودی کردم و نه ضرری!
از این به بعدش رو دقت کن هرچی نوشتم رو مطمئن باش توش نکتهای هست که برات سیگنال پیشرفت بده.
خارجیها به خصوص ترکیهایها گروههای متعددی دارن و خیلی بارها دعوت کردن که باهم فعالیت کنیم؛ من میتونم وقتی که اینجا میذارم رو برای اونا اختصاص بدم! اما دو تا هدف دارم از فارسی نویسی چون طی این ۱ سالی که گذشت قشنگ برام روشن شد که هیچ دانش و آگاهی فارسی درستی در خصوص موضوع شبکههای اجتماعی غیرمتمرکز منتشر نشده.
۱) فرهنگ درست وب ۳ رو جا بندازیم! من دلم میخواد هرجا ایرانی رفت بهش افتخار کنیم نه اینکه برعکس از خجالت آب بشیم.
۲) محتوای فارسی درست رو در این خصوص منتشر کنیم، همهٔ تعاریف رو از اول بازنویسی خواهیم کرد؛ از سیر تا پیاز! بنابراین اگه هر سوألی هم بود که بهش مشکوک هستید یا به هر نحوی جا نیفتاده بپرسید.
۳) شبکهسازی قویتر و حفظ یکپارچگی جامعه برای حمایت در روزهای سخت و پیشرفت در روزهای سر سبز.
۴) تیمسازی و حفظ فرصتهای همکاری و توسعه.
۵) سرمایهگذاری روی استعداد یابی، حمایت یا هر کمکی که برای پیشرفت استعدادها لازم باشه.
چرا اینها رو میگم؟ چون من هیچ یک از این فرصتها رو ندیدم، نبوده و وجود هم نداشته و به شدت لازمه برای جامعه. هیچ استاد و هیچ مرجع فارسیای در اختیار من نبوده! سالها جون کندم رفتم یاد گرفتم و الآن وقتشه بخشیش رو هم به جامعه منتقل کنم.
به هر نحوی LFG 🔥👊🏼
حالا چرا خوش به حالت؟ چون:
⚡️سابقهت هنوز تازهست؛ حتی اگه قبلاً اشتباهی هم کردی، هنوز وقت جبران هست و میتونی مسیرت رو از همین حالا درست بسازی.
⚡️سال قبل من داخل جامعهٔ فارسی فعال نبودم که بتونم به عنوان منتور کنار شماها باشم، اما امسال اینجا هستم و قراره باهم پیش بریم.
⚡️پارسال همه چیز حالت آزمایشی داشت… ولی امسال؟ همه چیز جدیه!
پس اگه آمادهای که هوشمند، خلاق و درست پیش بری، بدون که زمانش همین حالاست! فرض کن صفر صفر هستی! برای اینکه درست پیش بریم من هم حساب کتابم رو صفر در نظر میگیرم چه سود چه ضرر! فرض میکنم نه سودی کردم و نه ضرری!
از این به بعدش رو دقت کن هرچی نوشتم رو مطمئن باش توش نکتهای هست که برات سیگنال پیشرفت بده.
خارجیها به خصوص ترکیهایها گروههای متعددی دارن و خیلی بارها دعوت کردن که باهم فعالیت کنیم؛ من میتونم وقتی که اینجا میذارم رو برای اونا اختصاص بدم! اما دو تا هدف دارم از فارسی نویسی چون طی این ۱ سالی که گذشت قشنگ برام روشن شد که هیچ دانش و آگاهی فارسی درستی در خصوص موضوع شبکههای اجتماعی غیرمتمرکز منتشر نشده.
۱) فرهنگ درست وب ۳ رو جا بندازیم! من دلم میخواد هرجا ایرانی رفت بهش افتخار کنیم نه اینکه برعکس از خجالت آب بشیم.
۲) محتوای فارسی درست رو در این خصوص منتشر کنیم، همهٔ تعاریف رو از اول بازنویسی خواهیم کرد؛ از سیر تا پیاز! بنابراین اگه هر سوألی هم بود که بهش مشکوک هستید یا به هر نحوی جا نیفتاده بپرسید.
۳) شبکهسازی قویتر و حفظ یکپارچگی جامعه برای حمایت در روزهای سخت و پیشرفت در روزهای سر سبز.
۴) تیمسازی و حفظ فرصتهای همکاری و توسعه.
۵) سرمایهگذاری روی استعداد یابی، حمایت یا هر کمکی که برای پیشرفت استعدادها لازم باشه.
چرا اینها رو میگم؟ چون من هیچ یک از این فرصتها رو ندیدم، نبوده و وجود هم نداشته و به شدت لازمه برای جامعه. هیچ استاد و هیچ مرجع فارسیای در اختیار من نبوده! سالها جون کندم رفتم یاد گرفتم و الآن وقتشه بخشیش رو هم به جامعه منتقل کنم.
به هر نحوی LFG 🔥👊🏼
🔥10❤2👍1
COMPΞZ 🧬
اگه جزو اونایی هستی که تازه تو این سه ماههٔ آخر سال وارد دنیای وب۳ و مخصوصاً فارکستر شدی؛ یا حتی اگه قبلاً یه جاهایی اشتباه رفتی ولی حالا فهمیدی که درست فعالیت کردن چقدر مهمه! باید بگم: خوش به حالت! 😉 پارسال که همین موقعها بود من وارد خود فارکستر شدم به همهٔ…
تصمیم داشتم کانال رو کاملاً خصوصی کنم مثل یه گروه محدود شده؛ اما بذاریم به شیوهٔ طبیعی خودش پیش بریم، آهسته و پیوسته (به زمان نیاز داریم).
درضمن، روشهای زیادی هم بلدم که یه روزه تعداد اعضای کانال رو ببرم بالا! ولی اینجا من نه پول میگیرم برای تبلیغات و نه پولی میدم که تبلیغ بشه! روشهاش رو هم بلدم میتونم راحت بگم دلار میدم برای هر پست و لایک و کامنت یه روزه ده برابر عضو بگیریم! اما هدف این نیست که فرهنگ رو با وعدهٔ پول دادن بسازیم این آدم رو ضعیف به بار میاره؛ هدف اینه که روی پتانسیلهای خودمون کار کنیم که وقتی کسی هم نبود بتونیم پیش بریم، پول به دنبالش میاد مطمئن باش. 👊🏼🔥
درضمن، روشهای زیادی هم بلدم که یه روزه تعداد اعضای کانال رو ببرم بالا! ولی اینجا من نه پول میگیرم برای تبلیغات و نه پولی میدم که تبلیغ بشه! روشهاش رو هم بلدم میتونم راحت بگم دلار میدم برای هر پست و لایک و کامنت یه روزه ده برابر عضو بگیریم! اما هدف این نیست که فرهنگ رو با وعدهٔ پول دادن بسازیم این آدم رو ضعیف به بار میاره؛ هدف اینه که روی پتانسیلهای خودمون کار کنیم که وقتی کسی هم نبود بتونیم پیش بریم، پول به دنبالش میاد مطمئن باش. 👊🏼🔥
👍9❤2
GM | Superboard #6
صبح بخیر!
https://warpcast.com/compez.eth/0xb0246ab6
هنر زندگی، در جزئیات کوچک و تلاشهای بیپایانه است. 😉🤍
صبح بخیر!
https://warpcast.com/compez.eth/0xb0246ab6
هنر زندگی، در جزئیات کوچک و تلاشهای بیپایانه است. 😉🤍
❤1
پارسال یادمه شبهای قدر دقیقاً با روزهای تولدم همراه بود! این برای من معنای ویژهای داشت چون چنین اتفاقی به ندرت میافته و تقریباً نتایجش رو هم تونستم به خوبی درک کنم! امسال هم روزهای آغازین سال با این شبهای پرنور و پرمفهوم همراهه!
در این شبهای پرفیض قدر، از صمیم قلب برای همه شما آرزوی خوشبختی، آرامش و موفقیت دارم.
امیدوارم این شبها برای همهمون شروعی جدید و فرصتی برای تغییرات بزرگ باشه. هرکجا که هستید، انرژی مثبت و برکت با شما باد. ❤️👊🏼
در این شبهای پرفیض قدر، از صمیم قلب برای همه شما آرزوی خوشبختی، آرامش و موفقیت دارم.
امیدوارم این شبها برای همهمون شروعی جدید و فرصتی برای تغییرات بزرگ باشه. هرکجا که هستید، انرژی مثبت و برکت با شما باد. ❤️👊🏼
❤4
ما در دعای جوشن کبیر عبارتی داریم که میگوییم: یا کریمٓ الصَّفْح!
معناش بسیار جالب هست که میگه: وقتی کسی تورو میبخشه و طوری فراموش میکنه که انگار نه انگار که تو خطایی رو مرتکب شدی! اصلاً هم به روت نمیاره و دیگه پیگیرش نیست. و این گونه است خدای ما!!!
انسانهایی که جنس بخشش اونها به این شکل هست واقعاً خوش به حالشون دل بزرگی دارند! و چه بسا کسانی هم هستند که سرشار از تکبر و غرور و به دنبال انتقام هستند و افسوس بر حال آنها!
معناش بسیار جالب هست که میگه: وقتی کسی تورو میبخشه و طوری فراموش میکنه که انگار نه انگار که تو خطایی رو مرتکب شدی! اصلاً هم به روت نمیاره و دیگه پیگیرش نیست. و این گونه است خدای ما!!!
انسانهایی که جنس بخشش اونها به این شکل هست واقعاً خوش به حالشون دل بزرگی دارند! و چه بسا کسانی هم هستند که سرشار از تکبر و غرور و به دنبال انتقام هستند و افسوس بر حال آنها!
👏4🕊1
This media is not supported in your browser
VIEW IN TELEGRAM
در مورد این پروژه که قبلاً ساختم و در Behance هست؛ اگه ایدهٔ تکمیلی برای اجرا در محیط web3 و بستر بلاکچین داشتین بهم اطلاع بدین، استقبال میکنم.
هر چیزی که بتونه با توکن اختصاصی در آینده ترکیب بشه.
https://www.behance.net/gallery/159035077/Project-Playcube
هر چیزی که بتونه با توکن اختصاصی در آینده ترکیب بشه.
https://www.behance.net/gallery/159035077/Project-Playcube
COMPΞZ 🧬
در مورد این پروژه که قبلاً ساختم و در Behance هست؛ اگه ایدهٔ تکمیلی برای اجرا در محیط web3 و بستر بلاکچین داشتین بهم اطلاع بدین، استقبال میکنم. هر چیزی که بتونه با توکن اختصاصی در آینده ترکیب بشه. https://www.behance.net/gallery/159035077/Project-Playcube
This media is not supported in your browser
VIEW IN TELEGRAM
اینو من در سال ۲۰۲۲ ساختم! با تجربهای که الآن دارم مطمئنم چیزی که بازسازی کنم ازش به مراتب یک نمونهٔ به شدت متفاوت ازش در میاد.
فرض بر این بگیریم، کل پروتکل فارکستر رو باهاش ادغام کنم و شما روی هر پلتفرمی بتونید on-chain روی محیط به تعاملها با طعم بازی بپردازید و با درگیر شدن با محیط توکن به دست بیارید.
اینها یه بخشی از پروژههامه که خاک خوردن اما همشونو باز سازی خواهم کرد.
فرض بر این بگیریم، کل پروتکل فارکستر رو باهاش ادغام کنم و شما روی هر پلتفرمی بتونید on-chain روی محیط به تعاملها با طعم بازی بپردازید و با درگیر شدن با محیط توکن به دست بیارید.
اینها یه بخشی از پروژههامه که خاک خوردن اما همشونو باز سازی خواهم کرد.
🔥1
استاندارد ۲۳ عضو std::contains را به کانتینرهای مختلف کتابخانه استاندارد اضافه کرده است که فرآیند جستجو برای عناصر را به طور قابل توجهی ساده میکند. این ویژگی به مانند کتابخانههای Boost و Qt میباشد که به تازگی به استاندارد پیشفرض STL اضافه شده است. عضو std::contains یک تابع است که به شما امکان میدهد بررسی کنید که آیا یک مخزن یک مقدار یا عنصر خاص را نگه می دارد یا خیر. اگر عنصر در داخل مخزن وجود داشته باشد، true و در غیر این صورت false را بر میگرداند.
همچنین std::contains با انواع مختلف مخازن و نوع std::string در استاندارد STL کار میکند.
مثالی از نحوهٔ استفاده:
#cpp20 #cpp23 #contain
همچنین std::contains با انواع مختلف مخازن و نوع std::string در استاندارد STL کار میکند.
مثالی از نحوهٔ استفاده:
import std;
auto main() -> int {
std::unordered_set<int> numbers = {1, 2, 3, 4, 5};
if (numbers.contains(3)) {
std::println("3 is in the set.");
}
std::string sentence = "Hello, world!";
bool has_world = sentence.contains("world");
}
#cpp20 #cpp23 #contain
COMPΞZ 🧬
استاندارد ۲۳ عضو std::contains را به کانتینرهای مختلف کتابخانه استاندارد اضافه کرده است که فرآیند جستجو برای عناصر را به طور قابل توجهی ساده میکند. این ویژگی به مانند کتابخانههای Boost و Qt میباشد که به تازگی به استاندارد پیشفرض STL اضافه شده است. عضو…
بخش تخصصی دوم (بهروز رسانی Solidity) | متغیرهای حالت ثابت و تغییرناپذیر (Constant/Immutable)
وضعیت متغیرها میتواند به دو صورت ثابت (constant) یا تغییر ناپذیر (immutable) اعلان شوند. مشابه این وضعیت در ++C دیدهایم که به صورت mutable و const ثابت و تغییرپذیر اعلان میشوند! اما در سالیدیتی در هر دو حالت، متغیرها پس از ساخت قرار قابل تغییر نمیباشند. برای متغیرهای ثابت (constant)، مقدار باید در زمان کامپایل ثابت میشود، در حالی که برای متغیرهای immutable، همچنان میتوان مقدار آن را در زمان ساخت قرارداد تعیین کرد.
نکته) کامپایلر یک شکاف ذخیرهسازی برای این متغیرها رزرو نمیکند و هر بار که اتفاق میافتد، توسط مقدار مربوطه جایگزین میشوند.
از این رو نسبت به متغیرهای وضعیت معمولی، هزینههای گاز (gas fee) در متغیرهای ثابت و بدون تغییر بسیار کمتر هستند. برای یک متغیر ثابت، عبارت اختصاص داده شده به آن به تمام مکانهایی که دسترسی به آن دارند کپی میشود و همچنین هر بار مجدد ارزیابی میشود. این امر امکان بهینهسازیهای محلی را فراهم میکند. متغیرهای بدون تغییر یک بار در زمان ساخت ارزیابی میشوند و مقدار آن به تمام نقاط کد که به آن دسترسی دارند کپی میشود. برای این مقادیر، ۳۲ بایت رزرو شده است، حتی اگر در کمترین بایتها جا بیایند. به دلیل این، اغلب اوقات مقادیر ثابت ممکن است ارزانتر از مقادیر بدون تغییر باشند.
برای متغیرهای ثابت (constant)، مقدار باید در زمان کامپایل به صورت ثابت باشد و باید در جایی که متغیر اعلان میشود، اختصاص داده شود. هر عبارتی که به ذخیرهسازی، دادههای بلاکچین (مانند block.timestamp، address(this).balance یا block.number) یا دادههای اجرا (msg.value یا gasleft()) دسترسی داشته باشد یا تماسهایی به قراردادهای خارجی بزند غیرمجاز است. عباراتی که ممکن است اثر جانبی برای اختصاص حافظه داشته باشند، مجاز هستند، اما عباراتی که ممکن است اثر جانبی بر روی سایر اشیاء حافظه داشته باشند، مجاز نیستند. توابع تعریف شده به طور داخلی keccak256، sha256، ripemd160، ecrecover، addmod و mulmod مجاز هستند (حتی با استثنای keccak256 که تماس با قراردادهای خارجی انجام میدهند).
متغیرهای اعلان شده به عنوان immutable نسبت به آنهایی که به صورت ثابت اعلان میشوند، کمتر محدود هستند؛ متغیرهای Immutable میتوانند در زمان ساخت یک مقدار اختصاص داده شوند. مقدار میتواند هر زمان قبل از پیادهسازی تغییر یابد و سپس دائمی میشود.
#solidity #web3 #update #ether #اتریوم
وضعیت متغیرها میتواند به دو صورت ثابت (constant) یا تغییر ناپذیر (immutable) اعلان شوند. مشابه این وضعیت در ++C دیدهایم که به صورت mutable و const ثابت و تغییرپذیر اعلان میشوند! اما در سالیدیتی در هر دو حالت، متغیرها پس از ساخت قرار قابل تغییر نمیباشند. برای متغیرهای ثابت (constant)، مقدار باید در زمان کامپایل ثابت میشود، در حالی که برای متغیرهای immutable، همچنان میتوان مقدار آن را در زمان ساخت قرارداد تعیین کرد.
نکته) کامپایلر یک شکاف ذخیرهسازی برای این متغیرها رزرو نمیکند و هر بار که اتفاق میافتد، توسط مقدار مربوطه جایگزین میشوند.
از این رو نسبت به متغیرهای وضعیت معمولی، هزینههای گاز (gas fee) در متغیرهای ثابت و بدون تغییر بسیار کمتر هستند. برای یک متغیر ثابت، عبارت اختصاص داده شده به آن به تمام مکانهایی که دسترسی به آن دارند کپی میشود و همچنین هر بار مجدد ارزیابی میشود. این امر امکان بهینهسازیهای محلی را فراهم میکند. متغیرهای بدون تغییر یک بار در زمان ساخت ارزیابی میشوند و مقدار آن به تمام نقاط کد که به آن دسترسی دارند کپی میشود. برای این مقادیر، ۳۲ بایت رزرو شده است، حتی اگر در کمترین بایتها جا بیایند. به دلیل این، اغلب اوقات مقادیر ثابت ممکن است ارزانتر از مقادیر بدون تغییر باشند.
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.21;
uint constant X = 32**22 + 8;
contract C {
string constant TEXT = "abc";
bytes32 constant MY_HASH = keccak256("abc");
uint immutable decimals = 18;
uint immutable maxBalance;
address immutable owner = msg.sender;
constructor(uint decimals_, address ref) {
if (decimals_ != 0)
// Immutables are only immutable when deployed.
// At construction time they can be assigned to any number of times.
decimals = decimals_;
// Assignments to immutables can even access the environment.
maxBalance = ref.balance;
}
function isBalanceTooHigh(address other) public view returns (bool) {
return other.balance > maxBalance;
}
}
برای متغیرهای ثابت (constant)، مقدار باید در زمان کامپایل به صورت ثابت باشد و باید در جایی که متغیر اعلان میشود، اختصاص داده شود. هر عبارتی که به ذخیرهسازی، دادههای بلاکچین (مانند block.timestamp، address(this).balance یا block.number) یا دادههای اجرا (msg.value یا gasleft()) دسترسی داشته باشد یا تماسهایی به قراردادهای خارجی بزند غیرمجاز است. عباراتی که ممکن است اثر جانبی برای اختصاص حافظه داشته باشند، مجاز هستند، اما عباراتی که ممکن است اثر جانبی بر روی سایر اشیاء حافظه داشته باشند، مجاز نیستند. توابع تعریف شده به طور داخلی keccak256، sha256، ripemd160، ecrecover، addmod و mulmod مجاز هستند (حتی با استثنای keccak256 که تماس با قراردادهای خارجی انجام میدهند).
متغیرهای اعلان شده به عنوان immutable نسبت به آنهایی که به صورت ثابت اعلان میشوند، کمتر محدود هستند؛ متغیرهای Immutable میتوانند در زمان ساخت یک مقدار اختصاص داده شوند. مقدار میتواند هر زمان قبل از پیادهسازی تغییر یابد و سپس دائمی میشود.
#solidity #web3 #update #ether #اتریوم
COMPΞZ 🧬
استاندارد ۲۳ عضو std::contains را به کانتینرهای مختلف کتابخانه استاندارد اضافه کرده است که فرآیند جستجو برای عناصر را به طور قابل توجهی ساده میکند. این ویژگی به مانند کتابخانههای Boost و Qt میباشد که به تازگی به استاندارد پیشفرض STL اضافه شده است. عضو…
عضو std::is_scoped_enum یک ویژگی جدید در استاندارد ۲۳ به شما امکان میدهد تا بررسی کنید که آیا یک نوع داده خاص از نوع «شمارشگر محدوده دار» (scoped enumeration) است یا خیر. شمارندهٔ محدودهدار نوعی از شمارنده (enumeration) است که در استاندارد ۱۱ معرفی شده است. این نوع شمارندهها از نظر امنیتی قویتر از شمارندههای سنتی (unscoped) هستند. از نظر مزیت از تداخل نام (name collision) با سایر شناسهها در محدودهٔ فعلی جلوگیری و از تبدیل ضمنی (implicit conversion) به انواع دیگر جلوگیری میکند.
ساختارهای شمارندهٔ محدودهدار
به توجه به ویژگی Scoped enumerations در زبان، از استاندارد ۲۳ میتوانیم به این صورت آنها را تشخیص دهیم؛ مثال:
#cpp20 #cpp23 #is_scoped_enum_v
ساختارهای شمارندهٔ محدودهدار
enum struct|class name { enumerator = constant-expression , enumerator = constant-expression , ... }
enum struct|class name : type { enumerator = constant-expression , enumerator = constant-expression , ... }
enum struct|class name ;
enum struct|class name : type ;به توجه به ویژگی Scoped enumerations در زبان، از استاندارد ۲۳ میتوانیم به این صورت آنها را تشخیص دهیم؛ مثال:
import std;
enum class ScopedEnum { A, B, C };
enum UnscopedEnum { X, Y, Z };
auto main() -> int {
std::println("ScopedEnum is scoped: {}", std::is_scoped_enum_v<ScopedEnum>);
std::println("UnscopedEnum is scoped: {}", std::is_scoped_enum_v<UnscopedEnum>);
}
#cpp20 #cpp23 #is_scoped_enum_v
COMPΞZ 🧬
عضو std::is_scoped_enum یک ویژگی جدید در استاندارد ۲۳ به شما امکان میدهد تا بررسی کنید که آیا یک نوع داده خاص از نوع «شمارشگر محدوده دار» (scoped enumeration) است یا خیر. شمارندهٔ محدودهدار نوعی از شمارنده (enumeration) است که در استاندارد ۱۱ معرفی شده است.…
بخش تخصصی دوم (بهروز رسانی Solidity) | متغیرهای بازگشتی
توابع در Solidity میتوانند مقادیر را به عنوان خروجی بازگردانند. این مقادیر بازگشتی با استفاده از کلمهٔکلیدی returns و به دنبال آن فهرستی از متغیرها تعریف میشوند. به عنوان مثال، فرض کنید میخواهید دو نتیجه را بازگردانید؛ جمع و حاصلضرب دو عدد صحیح که به عنوان ورودیهای تابع ارسال میشوند، سپس از چیزی شبیه به این استفاده میکنید:
توجه کنید که نام گذاری متغیرهای برگشتی اختیاری است. این متغیرها مانند هر متغیر محلی دیگری قابل استفاده هستند و با مقدار پیش فرض خود مقداردهی اولیه میشوند و این مقدار را تا زمانی که مجددا مقداردهی نشوند، حفظ میکنند.
شما میتوانید به دو روش از متغیرهای برگشتی استفاده کنید:
۱) تخصیص صریح) ابتدا به صورت جداگانه به متغیرهای بازگشتی مقدار اختصاص دهید و سپس تابع را مانند مثال بالا رها کنید.
۲) بازگرداندن مستقیم مقادیر) مقادیر بازگشتی (چه یک مقدار و چه چند مقدار) را مستقیماً با دستور return برگردانید:
اگر از دستور return زودهنگام برای خروج از تابعی که دارای متغیرهای برگشتی است، استفاده میکنید، باید حتماً مقادیر بازگشتی را به همراه دستور return مشخص کنید.
#solidity #web3 #update #ether #اتریوم
توابع در Solidity میتوانند مقادیر را به عنوان خروجی بازگردانند. این مقادیر بازگشتی با استفاده از کلمهٔکلیدی returns و به دنبال آن فهرستی از متغیرها تعریف میشوند. به عنوان مثال، فرض کنید میخواهید دو نتیجه را بازگردانید؛ جمع و حاصلضرب دو عدد صحیح که به عنوان ورودیهای تابع ارسال میشوند، سپس از چیزی شبیه به این استفاده میکنید:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;
contract Simple {
function arithmetic(uint a, uint b)
public
pure
returns (uint sum, uint product)
{
sum = a + b;
product = a * b;
}
}
توجه کنید که نام گذاری متغیرهای برگشتی اختیاری است. این متغیرها مانند هر متغیر محلی دیگری قابل استفاده هستند و با مقدار پیش فرض خود مقداردهی اولیه میشوند و این مقدار را تا زمانی که مجددا مقداردهی نشوند، حفظ میکنند.
شما میتوانید به دو روش از متغیرهای برگشتی استفاده کنید:
۱) تخصیص صریح) ابتدا به صورت جداگانه به متغیرهای بازگشتی مقدار اختصاص دهید و سپس تابع را مانند مثال بالا رها کنید.
۲) بازگرداندن مستقیم مقادیر) مقادیر بازگشتی (چه یک مقدار و چه چند مقدار) را مستقیماً با دستور return برگردانید:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;
contract Simple {
function arithmetic(uint a, uint b)
public
pure
returns (uint sum, uint product)
{
return (a + b, a * b);
}
}
اگر از دستور return زودهنگام برای خروج از تابعی که دارای متغیرهای برگشتی است، استفاده میکنید، باید حتماً مقادیر بازگشتی را به همراه دستور return مشخص کنید.
#solidity #web3 #update #ether #اتریوم