📜  Solidity – 变量(1)

📅  最后修改于: 2023-12-03 15:35:01.843000             🧑  作者: Mango

Solidity - 变量

Solidity 是以太坊区块链上常用的编程语言,本节将介绍 Solidity 的变量类型和使用方法。

数据类型

Solidity 中支持各种数据类型,包括有符号和无符号整数(int 和 uint)、布尔值(bool)、地址(address)、字节数组(bytes)、字符串(string)等。此外,还支持复合数据类型,比如结构体(struct)和映射(mapping)。

数值类型

整数类型 int 和 uint 可以用来表示任何大小的整数,其中 uint 是无符号整数类型,int 是有符号整数类型。如:

uint8 a; // 定义一个8位无符号整数变量a
int256 b; // 定义一个256位有符号整数变量b

布尔类型 bool 只有两个值,true 或 false,如:

bool c = true; // 定义一个布尔类型变量c并初始化为true
地址类型

地址类型 address 可以用来存储以太坊地址,如:

address d; // 定义一个地址类型变量d
数组类型

Solidity 支持定长数组(fixed-size array)和变长数组(dynamic array)两种数组类型。定长数组的长度是在定义时确定的,不能修改,而变长数组的长度可以动态改变。如:

uint256[5] e; // 定义一个长度为5的整数数组e
string[] f; // 定义一个变长字符串数组f
结构体类型

结构体类型 struct 可以用来定义自定义数据类型,如:

struct Person {
    string name;
    uint256 age;
}

Person[] g; // 定义一个Person类型的数组g
映射类型

映射类型 mapping 可以用来存储键值对,如:

mapping(string => uint256) h; // 定义一个从string类型到uint256类型映射的变量h
变量声明与初始化

Solidity 中变量的声明和初始化跟其他编程语言类似,如:

uint256 i; // 声明一个uint256类型的变量i
i = 123; // 初始化变量i为123
uint256 j = 456; // 声明并初始化uint256类型的变量j为456
变量作用域

Solidity 中有三种作用域:全局作用域、函数作用域和块作用域。全局变量定义在函数外部,可以被所有函数访问;函数内部定义的变量只能被该函数内部访问;块作用域变量定义在 if、for 等块中,只能在该块内部访问。

变量修饰符

Solidity 中支持各种变量修饰符,如:

visibility

visibility 用来标识函数或状态变量的可见性,包括 public、external、internal 和 private。public 可以被任何人调用,而 external 只能被其他合约调用,internal 可以被当前合约及其派生合约内的函数调用,private 只能被当前合约中定义的函数调用。

uint256 public k; // public变量k可以在任何地方访问
constant

constant 用来标识常量变量,一旦初始化后不能修改。

uint256 constant l = 789; // 定义一个常量l并初始化为789
immutable

immutable 与 constant 功能类似,用来标识不可变变量,但 immutable 可以在构造函数中进行初始化。

uint256 immutable m;

constructor() {
    m = 111; // 在构造函数中初始化不可变变量m
}
总结

本节简要介绍了 Solidity 中的变量类型、声明和初始化、作用域和修饰符等相关内容,作为 Solidity 开发的基础,希望能为读者提供帮助。