Solidity学习::(14)变量初始化变量初始化
1、初始化的值
值类型
对于引⽤类型
2、 声明后使⽤⽅式
值类型
对于值类型,声明变量后,即赋值为默认值,可直接使⽤。
引⽤类型如下讨论
(1) 动态数组
对于动态数组,声明后,仍需分配内存后⽅可访问
参见:
下给出正确的使⽤⽅式:
pragma solidity ^0.4.0;
contract ArrayInitialOk{
function f() returns (bytes1, uint8){
bytes memory bs = new bytes(1); //使⽤new关键字分配空间
uint8[] memory arr = new uint8[](1);
return (bs[0], arr[0]);//分配空间之后,才可访问元素
}
}
(2)映射
映射的声明后,不⽤显式初始化即可直接使⽤,只是对应的值都是初始化的值
(3)枚举
枚举类型不⽤显式初始化,默认值将为0。即顺位第⼀个值。
(4)结构体
结构体声明后,不⽤显式初始化即可使⽤。当没有显式初始化时,其成员值均为默认值。
作⽤域问题:
变量⽆论在函数内什么位置定义,其作⽤域均为整个函数,⽽⾮⼤多数据语⾔常见的块级作⽤域。
solidity【⼀些特殊的例⼦就是,虽然没有执⾏到,但是只要有声明的语句,对应的值就会被初始化】
pragma solidity ^0.4.0;
contract FunctionScope2{
function f() returns (uint8){
if(false){
uint8 foo = 10;
}
return foo;
}
}
返回结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。