美文网首页
[智能合约]:类型03 枚举,结构体和映射

[智能合约]:类型03 枚举,结构体和映射

作者: jea的笔记本 | 来源:发表于2019-02-19 23:50 被阅读0次

接下来看Solidity剩下的三种变量的类型:枚举,结构体和映射。


1.枚举

枚举是一个自定义的整型,有一种给数字赋予名字的感觉。在Solidity中,会根据枚举中元素的个数对应到相应的uint类型。关键字是enum

contract Struct {
    
    enum Number {Zero, One, Two, Three}
    Number num;
    
    function setNum(Number n) public {
        num = n;
    }
    
    function getNum() view public returns(Number){
        return num;
    }
}

在上述的例子中:

  • Number相当于一个uint8的整型,因为枚举中个数只有三个,在uint8的范围内。Number中的Zero == 0One == 1Two == 2Three == 3。如果超出了uint8的范围,则对应uint16的整形,以此类推。
  • 使用setNum函数时,传入的值必须是0 ~ 3,这跟我们设置的枚举元素个数是对应的,否则会报错。

2.结构体

结构体,是一些状态变量的集合。关键字是struct

struct Person {
    string name;
    uint age;
}
    
Person p = Person({name:"jea", age:19});
Person p1 = Person("jea",19);
  • 其中两种实例化Person的结果是一致的。
    如果采用Person p = Person({name:"jea", age:19});的方法,可以只输入nameage,这意味着,没有输入的值为空。
    如果采用Person p1 = Person("jea",19);的方法,则所有的数据字段都要输入,并且类型也要对应才行。
  • 通过.来访问结构体中的内容。如p.namep1.age

3.映射

映射,是key-value的对应关系,也可以称为字典类型。关键字是mapping

mapping (string => uint) strToUint;
    
function setMap(string memory _s, uint _u) public {
    strToUint[_s] = _u;
}
    
function getMap(string memory _s) view public returns(uint) {
    return strToUint[_s];
}
  • 通过 mapping (typeA => typeB) name;创建,也就是创建typeAtypeB的映射,映射名为name

  • 通过strToUint[_s] = _u;往映射中加入新值。_s为字符串索引,如果映射中没有_s对应的值,则在映射中加入_s,将_s对应的值设置为_u;如果映射中有_s对应的值,将该值修改为_u

  • 通过strToUint[_s]获取_s对应的值。也可以通过这种方法,判断映射中有没有索引_s的存在。

  • 注意,测试的时候,有字符串类型的要加双引号。如下:

相关文章

  • [智能合约]:类型03 枚举,结构体和映射

    接下来看Solidity剩下的三种变量的类型:枚举,结构体和映射。 1.枚举 枚举是一个自定义的整型,有一种给数字...

  • [swift 进阶]读书笔记-第五章:结构体和类 C5P1_2

    结构体和类 值类型:结构体、枚举引用类型:类 使用类,我们可以通过继承来共享代码。结构体、枚举无法继承。正好符合s...

  • 类和结构体

    类与结构体 本节内容包括: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合类型的赋值与...

  • swfit-类、结构对比

    结构体和枚举,基本类型都是值类型。 String,Array,Dictionary类型是作为结构体来实现的。 共同...

  • swift 结构体和类的区别

    结构体和类的本质区别(64bit下) 结构体是值类型(枚举也是值类型) 类是引用类型(指针类型) 类 结构体

  • swift学习三(类与结构体)

    一、类和结构体对比 二、结构体和枚举是值类型 三、类是引用类型 四、类和结构体的选择 五、字符串、数组、和字典类型...

  • 类和结构体(Classes & Structures)

    目录 类和结构体对比 结构体和枚举是值类型 类是引用类型 字符串、数组和字典类型的赋值与复制行为 类和结构体对比 ...

  • Day9 类和结构体

    本页包含内容:• 类和结构体对比• 结构体和枚举是值类型• 类是引用类型• 类和结构体的选择• 字符串、数组、和字...

  • swift元类型

    一、元类型(术语表示metaType) 元类型是指所有类型的类型,包括类、结构体、枚举和协议。 类、结构体或枚举类...

  • 日常随笔第八弹-枚举/结构体/可选类型

    枚举 可选类型(!与?) 结构体

网友评论

      本文标题:[智能合约]:类型03 枚举,结构体和映射

      本文链接:https://www.haomeiwen.com/subject/ueeweqtx.html