// 首先创建一个名为 Variables的合约 contract Variables { /* ******** State 变量 ********** */ /* 使用uint代表无符号整数, 表示不同大小的非负整数可用. 例如: - uint8 范围 从 0 到 2 ** 8 - 1 - uint256 范围 从 0 到 2 ** 256 - 1 `public` 表示该变量可以被合约内部访问,也可以被外部世界读取 */ uint8 public u8 = 10; uint public u256 = 600; uint public u = 1230; // uint is an alias for uint256
/* 该int类型允许为负数. 例如: - int256 ranges from -2 ** 255 to 2 ** 255 - 1 */ int public i = -123; // int 相当于 int256
// address 代表了一个以太坊地址 address public addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
// bool 代表了 boolean类型 bool public defaultBoo1 = false;
// 默认值 // 在Solidity中未赋值的变量有一个默认值 bool public defaultBoo2; // false uint public defaultUint; // 0 int public defaultInt; // 0 address public defaultAddr; // 0x0000000000000000000000000000000000000000
function doSomething() public { /* ******** Local 变量 ********** */ uint ui = 456;
// 首先创建一个合同叫Conditions contract Conditions { // 声明一个State变量来存储数字 uint public num;
/* 函数的名称是 set. 需要在使用uint和num设置state变量。 该方法声明为public 类型表示它也可以从内部被称为合同和外部。 */ function set(uint _num) public { num = _num; }
/* 函数的名称是 get。 该方法的返回值为数字 该方法声明为view 类型表示函数不改变任何变量的状态。 在solidity中view函数不消耗汽油. */ function get() public view returns (uint) { return num; }
/* 函数名是 foo。 该方法需要一个unit参数, 并且返回一个unit参数。 该方法通过if/else来比较入参x的大小 */ function foo(uint x) public returns (uint) { if (x < 10) { return 0; } else if (x < 20) { return 1; } else { return 2; } }
/* 函数的名称是循环。 它运行一个循环直到 10 */ function loop() public { // for 循环 for (uint i = 0; i < 10; i++) { if (i == 3) { // 用continue跳到下一个迭代 continue; } if (i == 5) { // 用break跳出循环 break; } } }