合約結構
在 Solidity 中,合約類似于面向對象程式設計語言中的類。 每個合約中可以包含
狀态變量
、
函數
、
函數修飾器
、
事件
、
結構類型
、 和
枚舉類型
的聲明,且合約可以從其他合約繼承。
狀态變量
狀态變量是永久地存儲在合約存儲中的值。
pragma solidity ^;
contract SimpleStorage {
uint storedData; // 狀态變量
// ...
}
有效的狀态變量類型參閱 類型 章節, 對狀态變量可見性有可能的選擇參閱 Visibility and Getters 。
函數
函數是合約中代碼的可執行單元。
pragma solidity ^;
contract SimpleAuction {
function bid() public payable { // 函數
// ...
}
}
Function Calls 可發生在合約内部或外部,且函數對其他合約有不同程度的可見性( Visibility and Getters)。
函數修飾器
函數修飾器可以用來以聲明的方式改良函數語義(參閱合約章節中 Function Modifiers)。
pragma solidity ^;
contract Purchase {
address public seller;
modifier onlySeller() { // 修飾器
require(msg.sender == seller);
_;
}
function abort() public onlySeller { // Modifier usage
// ...
}
}
事件
事件是與以太坊虛拟機日志工具的友善接口。
pragma solidity ^;
contract SimpleAuction {
event HighestBidIncreased(address bidder, uint amount); // 事件
function bid() public payable {
// ...
HighestBidIncreased(msg.sender, msg.value); // 觸發事件
}
}
有關如何聲明事件和如何在 dapp 中使用事件的資訊,參閱合約章節中的 Events。
結構類型
結構是可以将幾個變量分組的自定義類型(參閱類型章節中的 Structs)。
pragma solidity ^.0;
contract Ballot {
struct Voter { // 結構
uint weight;
bool voted;
address delegate;
uint vote;
}
}
枚舉類型
枚舉可用來建立有一定數量的值的自定義類型(參閱類型章節中的 Enums)。
pragma solidity ^.;
contract Purchase {
enum State { Created, Locked, Inactive } // 枚舉
}
上一篇:深入了解Solidity——Solidity源檔案結構
下一篇:深入了解Solidity——值類型