【Solidity】2.合约的结构体 - 深入理解Solidity

索引

2 合约的结构体

Solidity的合约类似于面向对象语言的类。 每个合同都可以包含State Variables, Functions, Function Modifiers, Events, Structs TypesEnum 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 } // 枚举
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值