索引
- 【Solidity】1.一个Solidity源文件的布局
- 【Solidity】2.合约的结构体
- 【Solidity】3.类型
- 【Solidity】4.单位和全局可变量
- 【Solidity】5.表达式和控制结构
- 【Solidity】6. 合约
- 【Solidity】7. 部件
- 【Solidity】8. 杂项
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 } // 枚举
}