基本概念Solidity是一种用于编写以太坊智能合约的高级编程语言。在Solidity中,数据类型分为值类型(基本数据类型)和引用类型。
Solidity 是一种用于编写以太坊智能合约的高级编程语言。在 Solidity 中,数据类型分为值类型(基本数据类型)和引用类型。理解这些数据类型及其使用场景是编写高效、安全智能合约的基础。本文将详细介绍 Solidity 中的值类型和引用类型,并通过示例说明它们的使用场景。
值类型在赋值或传递时总是按值拷贝,而不是按引用。修改拷贝的值不会影响原始值。
booltrue 或 falsebool isReady = true;
bool isFinished = false;
<!---->
int8 到 int256,以 8 位为步长(如 int8, int16, ..., int256)。int 是 int256 的别名。int256 a = -10;
int b = 20; // int 是 int256 的别名
<!---->
<!---->
uint8 到 uint256,以 8 位为步长(如 uint8, uint16, ..., uint256)。uint 是 uint256 的别名。uint256 c = 100;
uint d = 200; // uint 是 uint256 的别名
<!---->
address:存储 20 字节的以太坊地址。address payable:与 address 类似,但可以接收以太币(ether)。<!---->
address user = 0x1234567890123456789012345678901234567890;
address payable recipient = payable(user);
bytes1 到 bytes32bytes32 hash = keccak256("Hello, Solidity!");
bytes1 firstByte = 0x01;
enumenum State { Created, Locked, Inactive }
State public state = State.Created;
引用类型在赋值或传递时按引用传递,修改引用会影响原始数据。
<!---->
T[k],其中 T 是元素类型,k 是固定长度。uint[5] fixedArray;
<!---->
<!---->
T[],其中 T 是元素类型。uint[] dynamicArray;
<!---->
bytes:动态大小的字节数组。string:动态大小的 UTF-8 字符串(本质上是 bytes 的特殊形式)。<!---->
bytes data = "Hello";
string name = "Solidity";
structstruct User {
string name;
uint age;
}
User alice = User("Alice", 25);
mappingmapping(address => uint) balances;
balances[0x123...] = 100;
contractcontract MyContract {
function foo() public pure returns (string memory) {
return "Hello";
}
}
MyContract c = new MyContract();
bool、int、uint、address、bytes1 到 bytes32、enum、function。bytes、string、struct、mapping。contract如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!