1703876584
区块链项目开发指南 3.4.6 delete操作符
1703876585
1703876586
delete操作符可以用于任何变量,将其设置成默认值。默认值均为0。
1703876587
1703876588
如果对动态数组使用delete操作符,则删除所有元素,其长度变为0。如果对静态数组使用delete操作符,则重置所有索引。还可以通过对特定索引位置使用delete来重置索引。
1703876589
1703876590
如果对map类型使用delete操作符,什么都不会发生。但是如果对map类型的一个键使用delete操作符,则会删除与该键相关的值。
1703876591
1703876592
下面给出了delete操作符的一个示例:
1703876593
1703876594
1703876595
1703876596
1703876597
1703876598
1703876599
1703876600
1703876601
1703876602
1703876604
区块链项目开发指南 3.4.7 基本类型之间的转换
1703876605
1703876606
除了数组类型、字符串类型、结构类型、枚举类型和map类型外,其他类型均称为基本类型。
1703876607
1703876608
如果把一个操作符应用于不同的类型,编译器将尝试把一个操作数隐式转换为另一种类型。通常来说,如果没有语义信息丢失,值和类型之间可以进行隐式转换:uint8可转换为uint16,int128可转换为int256,但是int8不可转换为uint256(因为uint256不能存储,例如-1)。此外,无符号整数可以转换成同等大小或者更大的字节,但是反之则不然。任何可以转换成uint160的类型都可以转换成地址。
1703876609
1703876610
Solidity也支持显式转换。所以,如果编译器不允许在两种数据类型之间隐式转换,则可以进行显式转换。建议尽量避免显式转换,因为可能返回难以预料的结果。
1703876611
1703876612
来看一个例子:
1703876613
1703876614
1703876615
1703876616
1703876617
这里是将uint32类型显式转换为uint16,也就是说,把较大类型转换为较小类型,因此高位被砍掉了。
1703876618
1703876619
1703876620
1703876621
1703876623
区块链项目开发指南 3.4.8 使用var
1703876624
1703876625
Solidity提供了用于声明变量的var关键字。变量类型根据分配给它的第一个值来动态确定。一旦分配了值,类型就固定了,所以如果给它指定另一个类型,将引起类型转换。示例如下:
1703876626
1703876627
1703876628
1703876629
1703876630
1703876631
记住:在定义数组array和map时不能使用var。var也不能用于定义函数参数和状态变量。
1703876632
[
上一页 ]
[ :1.703876583e+09 ]
[
下一页 ]