متغیرهای تغییرناپذیر شبیه به ثابتها هستن، اما با یک تفاوت کلیدی:
- مقدار متغیرهای تغییرناپذیر میتونه داخل سازنده (constructor) تنظیم بشه، ولی بعد از اون قابل تغییر نیست.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
contract Immutable {
// طبق اصول کدنویسی، نام متغیرهای ثابت و تغییرناپذیر باید با حروف بزرگ نوشته بشه.
address public immutable MY_ADDRESS;
uint256 public immutable MY_UINT;
constructor(uint256 _myUint) {
MY_ADDRESS = msg.sender; // آدرس فراخواننده قرارداد
MY_UINT = _myUint; // مقدار ورودی که هنگام اجرا تعیین میشه
}
}
توضیحات بیشتر: #
- تفاوت با ثابتها (Constants):
ثابتها در زمان تعریف مقدارههی میشن و نمیتونن تغییر کنن.
اما متغیرهای تغییرناپذیر میتونن هنگام اجرای سازنده مقدارههی بشن. - مزایا:
- مثل ثابتها، متغیرهای تغییرناپذیر هم باعث کاهش هزینه گس میشن.
- این نوع متغیرها برای مقادیری که باید فقط یک بار تعیین بشن (مثلاً آدرس فراخواننده قرارداد) مفیدن.
- مثال در کد بالا:
MY_ADDRESS
: آدرس کسی که قرارداد رو اجرا کرده.MY_UINT
: مقداری که هنگام اجرای سازنده بهعنوان ورودی به قرارداد داده میشه.