這篇文章主要介紹“怎么將address轉換為address payable”,在日常操作中,相信很多人在怎么將address轉換為address payable問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么將address轉換為address payable”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)公司專注于華陰網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供華陰營銷型網(wǎng)站建設,華陰網(wǎng)站制作、華陰網(wǎng)頁設計、華陰網(wǎng)站官網(wǎng)定制、成都微信小程序服務,打造華陰網(wǎng)絡公司原創(chuàng)品牌,更為您提供華陰網(wǎng)站排名全網(wǎng)營銷落地服務。
solidity 0.5將地址類型細分為address
和address payable
的目的在于,它有助于強制智能合約開發(fā)人員認真考慮一個地址是否應當接收以太幣,如果該地址根本不需要接收以太幣,那么就應當使用address
類型。當?shù)刂繁宦暶鳛?code>address類型后,如果開發(fā)者試圖向該地址轉入以太幣,就會導致編譯時類型錯誤。
address
和address payable
類型都用來存儲160位的以太坊地址,兩者的區(qū)別僅在編譯時存在,在編譯后的合約代碼中就沒有區(qū)別了 —— 也就是說,引入地址類型細分的唯一目的就是幫助開發(fā)者在編譯期理清一個地址的實際用途。
address payable
和address
類型的變量都表示以太坊地址,都可以使用底層的.call()
方法。從字面意思看,address payable
表示可用于支付的地址,因此在address payable
類型的變量上,你可以使用.transfer()
和.send()
方法,但是address
類型的變量則不能使用這些方法。
因此,address payable
類型的功能要強于address
類型,容易理解,address payable
向address
類型的轉換要容易一些(降級使用),而從address
類型向address payable
類型的轉換,則需要稍微轉個彎。
address payable
類型的變量可以顯式或隱式地轉換為address類型:
address payable addr1 = msg.sender; address addr2 = addr1; // 正確 address addr3 = address(addr1); // 正確
address
類型的變量只能顯式地轉換為address payable
,需要首先轉換為整數(shù)類型(例如uint160),然后再將該整型值轉換為address類型,就可以得到address payable
:
address addr1 = msg.sender; address payable addr2 = addr1; // 錯誤,address不能隱式地轉換為address payable address payable addr3 = address(uint160(addr1)); // 正確,先轉換為uint160,然后轉換為address payable
雖然單個address payable
變量可以轉換為address
類型,或者反之,但是不能直接將整個數(shù)組進行轉換。例如:
function testCast(address payable[] memory _addresses) returns (address[] memory) { return _addresses; // 錯誤! }
在Solidity的內置變量中,以下幾個變量的類型都是address payable
:
msg.sender
tx.origin
block.coinbase
你可以使用在線的Solidity IDE來測試本文中的Soldity代碼,以便更好地理解在Soldity 0.5中的address payable
和address
類型的區(qū)別與相互轉換。
到此,關于“怎么將address轉換為address payable”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
標題名稱:怎么將address轉換為addresspayable
網(wǎng)頁地址:http://weahome.cn/article/jcgssd.html