溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么將address轉(zhuǎn)換為address payable

發(fā)布時(shí)間:2021-12-07 15:20:44 來源:億速云 閱讀:146 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“怎么將address轉(zhuǎn)換為address payable”,在日常操作中,相信很多人在怎么將address轉(zhuǎn)換為address payable問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么將address轉(zhuǎn)換為address payable”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

solidity 0.5將地址類型細(xì)分為addressaddress payable的目的在于,它有助于強(qiáng)制智能合約開發(fā)人員認(rèn)真考慮一個(gè)地址是否應(yīng)當(dāng)接收以太幣,如果該地址根本不需要接收以太幣,那么就應(yīng)當(dāng)使用address類型。當(dāng)?shù)刂繁宦暶鳛?code>address類型后,如果開發(fā)者試圖向該地址轉(zhuǎn)入以太幣,就會(huì)導(dǎo)致編譯時(shí)類型錯(cuò)誤。

addressaddress payable類型都用來存儲(chǔ)160位的以太坊地址,兩者的區(qū)別僅在編譯時(shí)存在,在編譯后的合約代碼中就沒有區(qū)別了 —— 也就是說,引入地址類型細(xì)分的唯一目的就是幫助開發(fā)者在編譯期理清一個(gè)地址的實(shí)際用途。

address payableaddress類型的變量都表示以太坊地址,都可以使用底層的.call()方法。從字面意思看,address payable表示可用于支付的地址,因此在address payable類型的變量上,你可以使用.transfer().send()方法,但是address類型的變量則不能使用這些方法。

因此,address payable類型的功能要強(qiáng)于address類型,容易理解,address payableaddress類型的轉(zhuǎn)換要容易一些(降級(jí)使用),而從address類型向address payable類型的轉(zhuǎn)換,則需要稍微轉(zhuǎn)個(gè)彎。

1、address payable轉(zhuǎn)換為address

address payable類型的變量可以顯式或隱式地轉(zhuǎn)換為address類型:

address payable addr1 = msg.sender;
address addr2 = addr1; // 正確
address addr3 = address(addr1); // 正確

2、address轉(zhuǎn)換為address payable

address類型的變量只能顯式地轉(zhuǎn)換為address payable,需要首先轉(zhuǎn)換為整數(shù)類型(例如uint160),然后再將該整型值轉(zhuǎn)換為address類型,就可以得到address payable

address addr1 = msg.sender;
address payable addr2 = addr1; // 錯(cuò)誤,address不能隱式地轉(zhuǎn)換為address payable
address payable addr3 = address(uint160(addr1)); // 正確,先轉(zhuǎn)換為uint160,然后轉(zhuǎn)換為address payable

3、address[]或address payable[]的轉(zhuǎn)換

雖然單個(gè)address payable變量可以轉(zhuǎn)換為address類型,或者反之,但是不能直接將整個(gè)數(shù)組進(jìn)行轉(zhuǎn)換。例如:

function testCast(address payable[] memory _addresses) returns (address[] memory)
{
    return _addresses; // 錯(cuò)誤!
}

4、內(nèi)置的變量類型

在Solidity的內(nèi)置變量中,以下幾個(gè)變量的類型都是address payable

  • msg.sender

  • tx.origin

  • block.coinbase

你可以使用在線的Solidity IDE來測(cè)試本文中的Soldity代碼,以便更好地理解在Soldity 0.5中的address payableaddress類型的區(qū)別與相互轉(zhuǎn)換。

到此,關(guān)于“怎么將address轉(zhuǎn)換為address payable”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI