做下载类型网站怎样划算,邢台住房和城乡建设部网站,网站制作价格推 荐,wordpress用户注册表在 Solidity 语言中#xff0c;合约类似于其他面向对象编程语言中的类。
每个合约中可以包含 状态变量、 函数、 函数 , 事件 Event, 错误(Errors), 结构体 和 枚举类型 的声明#xff0c;且合约可以从其他合约继承。
还有一些特殊的合约#xff0c;如#xff1a; 库 和 …在 Solidity 语言中合约类似于其他面向对象编程语言中的类。
每个合约中可以包含 状态变量、 函数、 函数 , 事件 Event, 错误(Errors), 结构体 和 枚举类型 的声明且合约可以从其他合约继承。
还有一些特殊的合约如 库 和 接口.
专门的 合约 章节会比本节包含更多的内容本节用于帮助我们合约包含哪些内容做一个简单的入门。
状态变量
状态变量是永久地存储在合约存储中的值
pragma solidity 0.4.0 0.9.0;contract TinyStorage {uint storedXlbData; // 状态变量// ...
}函数
函数是代码的可执行单元。函数通常在合约内部定义但也可以在合约外定义
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.7.1 0.9.0;contract TinyAuction {function Mybid() public payable { // 定义函数// ...}
}// Helper function defined outside of a contract
function helper(uint x) pure returns (uint) {return x * 2;
}函数 修改器
函数 修改器 可以用来以声明的方式修改函数语义参阅合约章节中 函数修改器。
重载Overloading, 表示有同样的 修改器 名称但是有不同的参数的情况这是不允许的。
而例如函数或 修改器 则可以被 重写overridden。
pragma solidity 0.4.22 0.9.0;contract MyPurchase {address public seller;modifier onlySeller() { // 修改器require(msg.sender seller,Only seller can call this.);}function abort() public onlySeller { // 修改器用法// ...}
}事件 Event
事件是能方便地调用以太坊虚拟机日志功能的接口
pragma solidity 0.4.21 0.9.0;
contract TinyAuction {event HighestBidIncreased(address bidder, uint amount); // 事件function bid() public payable {// ...emit HighestBidIncreased(msg.sender, msg.value); // 触发事件}
}错误(Errors)
Solidity 为应对失败允许用户定义 error 来描述错误的名称和数据。 错误可以在 revert statements 中使用
跟用错误字符串相比 error 更便宜并且允许你编码额外的数据还可以用 NatSpec 为用户去描述错误。
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.4;/// 没有足够的资金用于转账 参数 requested 表示需要的资金available 表示仅有的资金。
error NotEnoughFunds(uint requested, uint available);contract Token {mapping(address uint) balances;function transfer(address to, uint amount) public {uint balance balances[msg.sender];if (balance amount)revert NotEnoughFunds(amount, balance);balances[msg.sender] - amount;balances[to] amount;// ...}
}结构体
结构体是可以将几个变量分组的自定义类型
pragma solidity 0.4.0 0.9.0;contract TinyBallot {struct Voter { // 结构体uint weight;bool voted;address delegate;uint vote;}
}
枚举类型
枚举可用来创建由一定数量的“常量值”构成的自定义类型
pragma solidity 0.4.0 0.9.0;contract Upchain {enum State { Created, Locked, InValid } // 枚举
}