当前位置:   article > 正文

solidity(3)

solidity(3)

地址类型

  1. pragma solidity ^0.8.0;
  2. contract AddressExample {
  3. // 地址
  4. address public _address = 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71;
  5. address payable public _address1 = payable(_address); // payable address,可以转账、查余额
  6. // 地址类型的成员
  7. uint256 public balance = _address1.balance; // balance of address
  8. }

上面的代码展示了 Solidity 中地址类型的基本用法。地址类型存储一个 20 字节的值,即以太坊地址的大小。地址类型有两种:普通地址和可以转账 ETH 的地址(payable)。payable 修饰的地址可以执行转账操作,并具有两个额外的成员函数:`transfer` 和 `send`。在 payable 修饰的地址中,`send` 执行失败不会影响当前合约的执行,但会返回 false 值,需要开发人员检查返回值。除此之外,payable 地址还提供了 `balance` 和 `transfer()` 成员函数,用于查询 ETH 余额和执行安全转账操作。

定长字节数组

  1. pragma solidity ^0.8.0;
  2. contract ByteArrayExample {
  3. // 固定长度的字节数组
  4. bytes32 public _byte32 = "MiniSolidity";
  5. bytes1 public _byte = _byte32[0]; // MiniSolidity变量以字节的方式存储进变量_byte32,转换成16进制为:0x4d696e69536f6c69646974790000000000000000000000000000000000000000
  6. // _byte变量存储_byte32的第一个字节,为0x4d
  7. }

上面的代码演示了 Solidity 中固定长度的字节数组的基本用法。字节数组有两种:定长和不定长。定长的字节数组(如 bytebytes8bytes32)属于数值类型,而不定长的字节数组是引用类型(稍后讲述)。

在示例中,_byte32 是一个固定长度的字节数组,存储了字符串 "MiniSolidity"。变量 _byte 存储了 _byte32 的第一个字节,即字符串 "M" 的 ASCII 码(十六进制为 0x4d)。

枚举

  1. pragma solidity ^0.8.0;
  2. contract EnumExample {
  3. // 用 enum 将 uint 012 表示为 Buy, Hold, Sell
  4. enum ActionSet { Buy, Hold, Sell }
  5. // 创建 enum 变量 action
  6. ActionSet public action = ActionSet.Buy;
  7. // enum 可以和 uint 显式的转换
  8. function enumToUint() external view returns (uint) {
  9. return uint(action);
  10. }
  11. }

上面的代码演示了 Solidity 中枚举(enum)的基本用法。枚举是 Solidity 中的用户定义数据类型,主要用于为 uint 分配名称,使程序易于阅读和维护。与 C 语言中的 enum 类似,Solidity 的枚举使用名称来代替从 0 开始的 uint。

在示例中,ActionSet 枚举类型定义了三个可能的取值:BuyHoldSell。通过创建 action 变量,并将其初始化为 ActionSet.Buy,我们可以将枚举值用于实际编程中。

此外,示例中的 enumToUint 函数演示了如何将枚举值显式转换为 uint 类型。这种转换可以方便地将枚举值用于计算或存储。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/411403
推荐阅读
相关标签
  

闽ICP备14008679号