跳转到内容

Basic Types

大多数基础类型看起来都很熟悉,但迁移代码时有几个细节会立刻影响实现。

  • Solidity 同时支持有符号和无符号整数,比如 int256uint256
  • Move 同时支持无符号与有符号整数,例如 u8u16u32u64u128u256,以及 i8i16i32i64i128i256
let a: u8 = 255;
let b: u64 = 1_000_000;
let c: u128 = 340282366920938463463374607431768211455;
let d: i64 = -42;
  • Solidity 使用 address
  • Move 同样使用 address,但地址字面量写法带 @
let framework: address = @0x1;
let custom: address = @0x42;
  • Solidity 的字符串本质上是 ABI 管理的动态字节数组。
  • Move 通常使用 std::string 中的 String,集合则常用 vector<T>
use std::string::String;
let message: String = string::utf8(b"hello");
let values: vector<u64> = vector[1, 2, 3];

就算一个 Solidity 示例看起来类型差不多,也请额外确认:

  • 整数位宽
  • 是否用到了有符号整数
  • 地址字面量语法
  • 某个值到底该是 vector<T>String,还是自定义 resource struct