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

简介: 索引【Solidity】1.一个Solidity源文件的布局【Solidity】2.合约的结构体 【Solidity】3.类型 【Solidity】4.单位和全局可变量 【Solidity】5.表达式和控制结构 【Solidity】6. 合约 【Solidity】7. 部件 【Solidity】8. 杂项 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 } // 枚举
}
目录
相关文章
|
IDE Go 开发工具
【Go·编辑器IDE】GoLand集成开发环境安装及使用教程
【Go·编辑器IDE】GoLand集成开发环境安装及使用教程
【Go·编辑器IDE】GoLand集成开发环境安装及使用教程
|
Go iOS开发 MacOS
手把手教你在Mac上从零搭建Go语言开发环境
手把手教你在Mac上从零搭建Go语言开发环境
5055 0
|
设计模式 测试技术 Go
学习Go语言
【10月更文挑战第25天】学习Go语言
197 4
|
消息中间件 Shell Go
GoLang 环境变量与配置
编程语言中的环境变量和配置管理是关键,Go 项目中配置文件不被打包,需通过环境变量解耦代码。
357 0
|
数据采集 监控 Java
go语言编程学习
【11月更文挑战第3天】
215 7
|
人工智能
ChatGPT 常见错误原因及解决方案:报错、回答不完整等
最近,由人工智能实验室 OpenAI 发布的对话式大型语言模型 ChatGPT 火得一塌糊涂。它可以与人类轻松地对话,无论是多么奇葩的问题 ChatGPT 都不在话下。在体验 ChatGPT 的同时我们也会遇到各种各样的问题,这里我总结了其对话过程中可能会发生的错误以及如何去解决它们。
215415 5
ChatGPT 常见错误原因及解决方案:报错、回答不完整等
|
消息中间件 编译器 数据库连接
说说Go语言的main函数
说说Go语言的main函数
143 0
|
安全 区块链 数据安全/隐私保护
迪斯卡(Disca)众筹质押挖矿系统项目开发/Solidity编写
迪斯卡(Disca)众筹质押挖矿系统项目开发/Solidity编写
Goland 开启文件保存自动进行格式化 的两种方式
Goland 开启文件保存自动进行格式化 的两种方式
Goland 开启文件保存自动进行格式化 的两种方式