国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

玩以太坊鏈上項目的必備技能(Constant 和 Immutable 狀態(tài)變量-Solidity之旅十六)

這篇具有很好參考價值的文章主要介紹了玩以太坊鏈上項目的必備技能(Constant 和 Immutable 狀態(tài)變量-Solidity之旅十六)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

constant(常量)

說到常量這一概念,擁有現(xiàn)代編程經(jīng)歷的您,對這一詞再熟悉不過了。

常量,常量,顧名思義便是變量值始終不變,這在很多面向?qū)ο蟪绦蛘Z言中都有。

相對 Solidity 來說,它也是支持常量的。

假若將狀態(tài)變量(State Vriable)聲明為constant(常量),而它的值是在編譯時有確定的表達式來給它賦值。

我們知道常量值是在編譯時確定的,所以區(qū)塊數(shù)據(jù)(例如 block.timestamp, address(this).balance 或者 block.number)或執(zhí)行數(shù)據(jù)( msg.valuegasleft() )或?qū)ν獠亢霞s的調(diào)用來給它們賦值都是不允許的。

允許可能對內(nèi)存分配產(chǎn)生副作用(side-effect)的表達式,但那些可能對其他內(nèi)存對象產(chǎn)生副作用的表達式則不允許。

內(nèi)建(built-in)函數(shù) keccak256sha256 , ripemd160 , ecrecover , addmodmulmod 是允許的(即使他們確實會調(diào)用外部合約, keccak256 除外)。

允許內(nèi)存分配器的副作用的原因是它可以構(gòu)造復(fù)雜的對象,例如: 查找表(lookup-table)。 此功能尚不完全可用。

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

contract ConstantExample {
    
    address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;
    uint public constant MY_UINT = 123;

}

constant 和 immutable 狀態(tài)變量,區(qū)塊鏈,區(qū)塊鏈,solidity,constant,常量,不可變量

immutable(不可變量)

狀態(tài)變量聲明為immutable(不可變量)constant聲明的狀態(tài)變量限制少。

可以在合約的構(gòu)造函數(shù)中或聲明時為不可變的變量分配任意值。 不可變量只能賦值一次,并且在賦值之后才可以讀取。

編譯器生成的合約創(chuàng)建代碼將在返回合約之前修改合約的運行時代碼,方法是將對不可變量的所有引用替換為分配給它們的值。 如果要將編譯器生成的運行時代碼與實際存儲在區(qū)塊鏈中的代碼進行比較,則這一點很重要。

不可變量可以在聲明時賦值,不過只有在合約的構(gòu)造函數(shù)執(zhí)行時才被視為視為初始化。 這意味著,你不能用一個依賴于不可變量的值在行內(nèi)初始化另一個不可變量。 不過,你可以在合約的構(gòu)造函數(shù)中這樣做。

這是為了防止對狀態(tài)變量初始化和構(gòu)造函數(shù)順序的不同解釋,特別是繼承時,出現(xiàn)問題。

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

contract ImmutableExample {
    
    address public immutable MY_ADDRESS;
    uint public immutable MY_UINT;

    constructor(uint _myUint) {
        MY_ADDRESS = msg.sender;
        MY_UINT = _myUint;
    }

}

constant 和 immutable 狀態(tài)變量,區(qū)塊鏈,區(qū)塊鏈,solidity,constant,常量,不可變量

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

contract ConstantImmutableExample {
    
    string constant TEXT = "abc";
    bytes32 constant MY_HASH = keccak256("abc");
    uint immutable decimals;
    uint immutable maxBalance;
    address immutable owner = msg.sender;

    constructor(uint decimals_, address ref) {
        decimals = decimals_;
        maxBalance = ref.balance;
    }

    function isBalanceTooHigh(address _other) public view returns (bool) {
        return _other.balance > maxBalance;
    }

}

constant 和 immutable 狀態(tài)變量,區(qū)塊鏈,區(qū)塊鏈,solidity,constant,常量,不可變量文章來源地址http://www.zghlxwxcb.cn/news/detail-787536.html

到了這里,關(guān)于玩以太坊鏈上項目的必備技能(Constant 和 Immutable 狀態(tài)變量-Solidity之旅十六)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【項目管理】AI時代項目經(jīng)理必備技能

    【項目管理】AI時代項目經(jīng)理必備技能

    ??博__主??:米碼收割機 ??技__能??:C++/Python語言 ??公眾號??:測試開發(fā)自動化【獲取源碼+商業(yè)合作】 ??榮__譽??:阿里云博客專家博主、51CTO技術(shù)博主 ??專__注??:專注主流機器人、人工智能等相關(guān)領(lǐng)域的開發(fā)、測試技術(shù)。 項目經(jīng)理在AI時代仍然是非常關(guān)鍵的角色

    2024年02月08日
    瀏覽(18)
  • 在本地以太坊私鏈上,使用go調(diào)用智能合約,獲取事件日志
  • 誰在以太坊區(qū)塊鏈上循環(huán)交易?TuGraph+Kafka的0元流圖解決方案

    都在說數(shù)據(jù)已經(jīng)成為新時代的生產(chǎn)資料。 但隨著大數(shù)據(jù)和人工智能等技術(shù)的發(fā)展,即便人們都知道數(shù)據(jù)的價值日益凸顯,卻無法憑借一己之力獲取和分析如此大規(guī)模的數(shù)據(jù)。 要想富,先修路。要想利用新時代的數(shù)據(jù)致富,也必須要有趁手的工具。只有合適的工具才能完成大

    2024年02月11日
    瀏覽(24)
  • OpenWrt新手必備之技能

    OpenWrt新手必備之技能

    Openwrt 的生態(tài)相當(dāng)復(fù)雜,初次接觸的人會感受到不少困惑,應(yīng)該選擇什么樣的硬件,從哪里找到合適的固件,需要安裝哪些插件,自自己動手還是拿來主義,系統(tǒng)不小心搞壞了怎么重置,如何更新或切換其他的固件,下面我們就這些困惑逐步展開解釋。 首先你需要一個支持

    2023年04月18日
    瀏覽(26)
  • 程序員必備技能之調(diào)試

    程序員必備技能之調(diào)試

    目錄 前言 本期內(nèi)容介紹 一、什么是Bug? 二、調(diào)試以及調(diào)試的重要性 2.1什么是調(diào)試? 2.2調(diào)試的基本步驟 ?三、Debug和Release介紹 Debug和Release 四、windows環(huán)境下的調(diào)試介紹 4.1調(diào)試環(huán)境 4.2一些調(diào)試常用的快捷鍵 4.3調(diào)試時查看當(dāng)前程序的信息 a、查看臨時變量的值 b、查看程序的

    2024年02月10日
    瀏覽(23)
  • 電源工程師必備技能匯總

    三、熟練運用Maxwell、JMAG、FLUX、Saber其中一種磁件仿真軟件,能夠利用仿真定性、定量分析,利用仿真指導(dǎo)磁性器件設(shè)計; . 負責(zé)開關(guān)電源產(chǎn)品的設(shè)計與開發(fā); 2. 負責(zé)產(chǎn)品總體方案設(shè)計,包括方案選型、器件選型、可靠性設(shè)計、原理圖/PCB設(shè)計等; 3. 負責(zé)產(chǎn)品的測試與驗證,

    2024年02月07日
    瀏覽(31)
  • 軟件測試必備7大技能

    軟件測試必備7大技能

    1.在測試中最重要的文檔,他是測試工作的核心,是一組在測試時輸入輸出的標(biāo)準(zhǔn),是軟件需求的具體對照。編寫測試用例,是測試人員的基本功,真正能寫好的人并不多。 2.測試用例包含的內(nèi)容:用例編號,用例名稱,測試背景,前置條件,優(yōu)先級,測試數(shù)據(jù),測試步驟,

    2024年02月08日
    瀏覽(23)
  • (必備技能)使用Python實現(xiàn)屏幕截圖

    (必備技能)使用Python實現(xiàn)屏幕截圖

    在csdn上有很多純copy,這給我復(fù)現(xiàn)帶來了很大的麻煩,所以我想根據(jù)我的個人找截圖的經(jīng)歷記錄下來,給未來的自己看,免得忘記了云云。 由于我比較喜歡用opencv處理圖像,所以截屏最后都會附帶一個使用opencv顯示圖片的一個步驟。 1、下載pyautogui包 注:使用pyautogui方法獲取

    2024年02月07日
    瀏覽(24)
  • 架構(gòu)師必備的37項技能清單

    架構(gòu)師必備的37項技能清單

    幾年前,我被問到“你是如何變成一名架構(gòu)師的?”。基于這個話題,我們討論了很多,比如必要的技術(shù)、經(jīng)驗以及所需要的知識儲備等。這一次討論促使我開始思考要成為一名架構(gòu)師應(yīng)該具備和學(xué)習(xí)的東西有哪些,成為一個優(yōu)秀的架構(gòu)師應(yīng)該具備哪些能力和做哪些事情。為

    2024年02月08日
    瀏覽(22)
  • FPGA開發(fā)必備技能:MATLAB應(yīng)用

    FPGA開發(fā)必備技能:MATLAB應(yīng)用 FPGA作為一種高性能的可編程邏輯器件,在各個領(lǐng)域都有著廣泛的應(yīng)用。而MATLAB作為一個重要的科學(xué)計算軟件,也能夠在FPGA開發(fā)中發(fā)揮巨大的作用。本文將介紹如何使用MATLAB來進行FPGA開發(fā)。 首先,我們需要了解MATLAB的特點和功能。MATLAB是一款強大

    2024年03月16日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包