Solidity
有人請解釋一下“支付和非支付地址的概念只存在於編譯時,而不是在合約編譯後”
實際上我正在閱讀這個答案https://ethereum.stackexchange.com/a/64109/55286。而這個人說,應付地址和不應付地址的概念只存在於 Solidity 類型系統中編譯時。應付地址和非應付地址之間的差異在編譯的合約程式碼中消失了。
這句話是否意味著地址和應付地址僅在編譯時定義,但在部署合約後,所有到達合約的地址也都是應付的?我不知道我很困惑
我試過但不明白請幫忙
正如您連結的答案底部(在“基本原理”下)中所解釋的那樣,這種差異使程序員能夠知道哪些地址是用來接收乙太幣的,哪些不是。它是語言提供的靜態安全措施(如靜態類型檢查)。
address payable
有成員transfer
,沒有(Solidity >= 0.5)send
。address
所以:address a = "0xsda"; address payable b = "0xsad"; a.transfer(1); // compilation error b.transfer(1); // good
更多資訊的文件連結:https ://solidity.readthedocs.io/en/v0.5.3/types.html#address 。