Vyper 入门: 6. 引用类型 在Vyper中,引用类型是指复杂的数据类型,它们引用对象或值。与值类型不同,引用类型可以存储和操作数据结构或大量数据。Vyper中常见的引用类型有:数组(Arrays)和结构体(Structs)。 :同一类型元素的集合,可以是固定大小或动态的 :自定义类型,可以组合多个变量 数组 数组是Vyper中常用的变量类型,用来存储同一类型元素的集合,比如整数、地址、字节等。数组分为固定长度数组和动态长度数组。 固定长度数组:在声明时指定数组的长度,长度不可变,用于存储已知且不变数量的元素。
数组:同一类型元素的集合,可以是固定大小或动态的结构体:自定义类型,可以组合多个变量typeName[N] 格式声明,其中N是元素数量owners: public(address[3]) numbers: public(uint256[3]) bytess: public(bytes32[3])
Bytes[N] 数组,需要使用关键字 DynArray 来创建数组DynArray 关键字创建动态数组,Vyper中的动态数组与Solidity不同,Vyper是有界数组,声明时需要指定最大数组长度。使用语法表示为 DynArray[T, N],其中 T 是元素类型,N 是数组的最大长度。DynArray 的含义和Python中的List 类似,同样存在 append 和 pop 语法。# 声明一个整数数组 example_list: public(DynArray[uint256, 3]) @external def setting(): # 添加整数 self.example_list.append(100) self.example_list.append(200) self.example_list.append(300) # 移除整数 self.example_list.pop()

address: 0x0000000000000000000000000000000000000000bool: Falsebytes32: 0x0000000000000000000000000000000000000000000000000000000000000000decimal: 0.0uint8: 0int128: 0int256: 0uint256: 0struct MyStruct: value1: uint256 value2: decimal # 初始化一个结构体 example_struct: public(MyStruct) # 给结构体赋值 # 方式1: 声明一个结构体赋值 @external def set_struct(): self.example_struct = MyStruct({value1: 100, value2: 99.0}) # 方式2: 直接对结构体赋值 @external def set_struct1(): self.example_struct.value1 = 1 self.example_struct.value2 = 2.0

数组 和 结构体 的使用,在选择使用哪种引用类型时,考虑数据的性质和合约的需求,动态数组和固定大小列表适合存储数量可变的同类元素,结构体非常适合用于组织具有不同属性的数据。