2 合约的结构体 Solidity的合约类似于面向对象语言的类。 每个合同都可以包含State Variables, Functions, Function Modifiers, Events, Structs Types 和 Enum Types的声明。 此外,合约可以继承其他合约。 状态变量状态变量是永久存储在合约存储中的值。 pragma solidity ^0.4.0;contract SimpleStorage { uint storedData; // 状态变量 // ...}请参阅有关状态变量类型的“类型”部分,“可见性”和“获取器”,以获取可见性的可能选择。 函数 Functions函数是一个代码合同中的可执行单元。 pragma solidity ^0.4.0;contract SimpleAuction { function bid() payable { // 函数 // ... }}函数调用可以内部或外部发生,均有不同程度的知名度对其他合同(可见性和getter)的。 函数修饰符 Function Modifiers函数修饰符可用于以声明方式修改函数的语义(参见“契约”部分中的函数修饰符)。 pragma solidity ^0.4.11;contract Purchase { address public seller; modifier onlySeller() { // Modifier require(msg.sender == seller); _; } function abort() onlySeller { // 调用Modifier // ... }}事件事件是与EVM日志工具便捷接口。 pragma solidity ^0.4.0;contract SimpleAuction { event HighestBidIncreased(address bidder, uint amount); // 事件 function bid() payable { // ... HighestBidIncreased(msg.sender, msg.value); // 触发事件 }}请参阅合约中的事件部分,了解有关事件如何声明和可以在dapp内使用的信息。 结构类型Structs是可以分组几个变量的自定义类型(请参阅类型部分中的结构体)。 pragma solidity ^0.4.0;contract Ballot { struct Voter { // 结构体 uint weight; bool voted; address delegate; uint vote; }}枚举类型枚举可用于创建具有有限值集的自定义类型(请参阅类型部分中的枚举)。 pragma solidity ^0.4.0;contract Purchase { enum State { Created, Locked, Inactive } // 枚举}
|