区块链

玩转solidity --03数据类型(值类型)

2018-04-11  本文已影响8人  DavieKong

solidity是一个静态类型的语言。也就是说每一个变量在申明的时候需要指定它的数据类型。
Solidity提供几个基本类型组合成复杂类型。

值类型

布尔类型

布尔:可能的常量值 是 真或假

操作符:

整型

int 和 uint分别是有符号和无符号的整数,关键字uint8 到 uint256 步长8 (从8到256位的无符号整数 )

uint 和 int 分别是 uint256 和 int256的别名
有符号整数和无符号整数
https://baike.baidu.com/item/%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E5%9E%8B/6717424?fr=aladdin
https://wenku.baidu.com/view/4ec21b2969dc5022aaea00d4.html

操作符:

地址

以太坊中的地址的长度为20字节,一字节等于8位,一共160位,所以address其实亦可以用uint160来声明

操作符:

地址成员:

若查询到有资产余额的地址,然后发送 Ether(以wei为单位) 到send 函数的地址上

address x = 0x123;

address myAddress = this;

if (x.balance < 10 && myAddress.balance >= 10) x.send(10);

整型

整型常量是特定精度整数,它们也可以和非常量同时使用。例如, var x = 1 - 2; 1 - 2的值是-1,然后赋值给x, 这时x接收类型为int8——最小的类型,其中包含-1, 虽然1和2的类型实际上是uint8。

有时最大超过256位的整型常量也可用于计算:var x =(0 xffffffffffffffffffff 0 xffffffffffffffffffff) 0;这里,x的值是0,它的类型是uint8类型。

字符串

字符串可以通过""或者''来表示字符串的值,Solidity中的string字符串不像C语言一样以\0结束,比如"hello"这个字符串的长度就为我们所看见的字母的个数,它的长度为5

pragma solidity ^0.4.4;

contract StringLiterals{ 
    
    string  _name; // 状态变量
    
    //构造函数
    function StringLiterals() {
        _name = "hello";
    }
    
    // set方法
    function setString(string name) {
        
        _name = name;
    }
    
    // get方法
    function name() constant returns (string) {
        
        return _name;
    }
    
}

注意:string字符串不能通过length方法获取其长度。

枚举

ActionChoices其实就是一个自定义的整型,当枚举数不够多时,它默认的类型为uint8,当枚举数足够多时,它会自动变成uint16,下面的GoLeft == 0,GoRight == 1, GoStraight == 2, SitStill == 3。在setGoStraight方法中,我们传入的参数的值可以是0 - 3当传入的值超出这个范围时,就会中断报错。

pragma solidity ^0.4.16;

contract test {
    enum ActionChoices { GoLeft, GoRight, GoStraight, SitStill }
    ActionChoices choice;
    ActionChoices constant defaultChoice = ActionChoices.GoStraight;

    function setGoStraight() public {
        choice = ActionChoices.GoStraight;
    }

    function getChoice() public view returns (ActionChoices) {
        return choice;
    }

    function getDefaultChoice() public pure returns (uint) {
        return uint(defaultChoice);
    }
}
上一篇下一篇

猜你喜欢

热点阅读