「链块技术38期」以太坊智能合约-Solidity变量类型:值类型 下

「链块技术38期」以太坊智能合约-Solidity变量类型:值类型 下

首页休闲益智链块更新时间:2024-08-03

原文链接:http://www.liankuai.tech/public/technology/72.html

区块链技术教程——智能合约,本文主要讲解了区块链开发技术——以太坊智能合约语言Solidity 值类型变量的一些特征和使用方法。

七. 值类型——定长字节数组

bytes1, ... ,bytes32,允许值以步长1递增。byte默认表示bytes1。

7.1 操作:

7.2 成员:

.length产生字节数组的固定长度(只读)。

八. 值类型——有理数和整数字面量

整数常量和有理数常量均支持科学计数法。基数可以是小数,指数必须是整数。 例如2e10,-2e10,2e-10,2.5e10

8.1 有理字面量(特指小数字面量):

8.2 整数字面量:

//十六进制表示 0x692a70d2e424a56d2c6c27aa97d1a86395877b3a

注意

数字字面量表达式一旦其中含有非字面量表达式,它就会被转为一个非字面量表达式

pragma solidity ^0.4.24; contract IntegerLiteralConvert{ function literalTest(){ uint128 a = 1; //uint128 b = 2.5 a 0.5; //2.5 a不能转换成一个非字面量表达式 } } 九. 值类型——地址字面量

地址字面量表现形式其实就是十六进制整数字面量,如果能够通过地址校验,就会被认为是地址类型,如果不通过则它表示的是一个整数。例如

0xdCad3a6d3569DF655070DEd06cb7A1b2Ccd1D3AF

就是一个地址类型的字面量,如果长度为39~40,没有通过地址校验的十六进制整数字面量,会被视为有理数常量,并且会产生一个warning(警告提示)。

十. 值类型——字符串常量:

字符串字面量是用双引号或单引号(“foo”或‘bar’)编写,长度可变。 它们不像C语言那样默认以0结尾; “foo”代表三个不是四个字节。 它们可以隐式转换为bytes1,…,bytes32。

pragma solidity ^0.4.24; contract StringLiteralsTest{ bytes15 public name; function setName(){ name = 'liankuaixueyuan'; } } 十一. 值类型——十六进制字面量

十六进制字面量,以关键字hex打头,后面紧跟用单或双引号包裹的字符串。如hex"001122ff"。在内部会被表示为二进制流,与字符串的存储形式相同,可以与字符串进行隐式转换,通过下面的例子来理解下是什么意思:

pragma solidity ^0.4.24; contract HexLiteral{ string name; bytes nameBytes; function setName()public{ name = hex"6c69616e6b7561697875657975616e"; nameBytes = hex"6c69616e6b7561697875657975616e"; //nameBytes = hex"a"; //由于一个字节是8位,所以一个hex是由两个[0-9a-z]字符组成的。所以var b = hex“A”;不是成双的,转字符串是会报错的 } function getName() public view returns (bytes,string){ return (nameBytes,name); } } 十二. 值类型——枚举

枚举类型是在Solidity中的一种用户自定义类型。

pragma solidity ^0.4.24; contract test { enum ActionChoices { GoLeft, GoRight, GoStraight, SitStill } ActionChoices choice; ActionChoices constant defaultChoice = ActionChoices.GoStraight; function setGoStraight() public { choice = ActionChoices.GoStraight; // 这里通过访问下标的形式得到相同的结果 // choice = ActionChoices(2); } function getChoice() public view returns (ActionChoices) { return choice; } function getDefaultChoice() public view returns (uint) { return uint(defaultChoice); } }

注意:

-END-

附上链块学院网课学习平台链接:http://wk.liankuai.tech/

助教卫星:lkxy007

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved