区块链:Solidity值类型(Solidity 枚举Enums & 结构体Structs)

枚举Enums

案例

pragma solidity ^0.4.4;

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

    function setGoStraight(ActionChoices choice) public {
        _choice = choice;
    }

    function getChoice() constant public returns (ActionChoices) {
        return _choice;
    }

    function getDefaultChoice() pure public returns (uint) {
        return uint(defaultChoice);
    }
}

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

结构体Structs

自定义结构体
pragma solidity ^0.4.4;

contract Students {

    struct Person {
        uint age;
        uint stuID;
        string name;
    }

}

Person就是我们自定义的一个新的结构体类型,结构体里面可以存放任意类型的值。

初始化一个结构体

初始化一个storage类型的状态变量。

  • 方法一
pragma solidity ^0.4.4;

contract Students {

    struct Person {
        uint age;
        uint stuID;
        string name;
    }

    Person _person = Person(18,101,"wt");

}
  • 方法二
pragma solidity ^0.4.4;

contract Students {

    struct Person {
        uint age;
        uint stuID;
        string name;
    }
    Person _person = Person({age:18,stuID:101,name:"wt"});
}

初始化一个memory类型的变量。

pragma solidity ^0.4.4;

contract Students {

    struct Person {
        uint age;
        uint stuID;
        string name;
    }

    function personInit() {

        Person memory person = Person({age:18,stuID:101,name:"liyuechun"});
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值