Solidity学习(二)——值类型

值类型

1、布尔类型

bool:可能的取值为true和false

2、整形

int有符号整形
uint无符号整型
uint8 to uint256从8位到256位无符号整型以8 位为步长递增(uint是uint256的别名)
int8 to int256从8位到256位有符号整型以 8 位为步长递增(int是int256的别名)

3、定长浮点型

Solidity还没有完全支持定长浮点型。可以声明定长浮点型的变量,但是不能给它们赋值过把它们的赋值给其他变量。(M表示该类型占用的位数,N表示可用的小数位。M必须能整除8,即8到256位。N则是从0到80之间的任意数。)

fixed有符号的定长浮点型
ufixed无符号的定长浮点型
fixedMxN带符号的定长浮点型,fixed与fixed128x19相同。
ufixedMxN无符号的定长浮点型,ufixed与ufixed128x19相同。

浮点型(在许多语言中的 float 和 double 类型,更准确地说是 IEEE 754 类型)和定长浮点型之间最大的不同点是, 在前者中整数部分和小数部分(小数点后的部分)需要的位数 是灵活可变的,而后者中这两部分的长度受到严格的规定。

4、地址类型

地址类型有两种形式。

address保存一个20字节的值(以太坊地址的大小)
address payble可支付地址

5、定长字符数组

bytes1,bytes2,bytes3,…,bytes32。(bytes1长度必须为1字节,同理bytes2长度必须为2字节)

6、变长字节数组

bytes:变长字节数组。他其实是一种特殊的数组,不是值类型。
string:变长UTF-8编码字符串类型。它同样也是一种特殊的数组。

7、枚举类型

枚举类型的数据表示和C语言的基本一致,选项从“0”开始的无符号整数值表示。

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16  <0.9.0;

contract test {
    enum Choices { red, yellow, green, white, black}
    Choices action;
    Choices constant DefaultChoice = Choices.yellow;//yellow的值为1,赋值给DefaultChoice
    // 由于枚举类型不属于 |ABI| 的一部分,因此对于所有来自 Solidity 外部的调用,
    // "getChoice" 的签名会自动被改成 "getChoice() returns (uint8)"。
    
    function setAction() public {
        action = DefaultChoice;
    }


    function getChoice() public view returns (Choices) {
        return action;
    }
    
    function getDefaultChoice() public pure returns (uint) {
        return uint(Choices.green);//green的值为2
    }
}

运行结果可以看出getChoice()函数中返回值是1,getDefaultChoice()函数中的返回值是2,
在这里插入图片描述

8、函数

函数类型是一种表示函数的类型。其使用和很多语言类似,可以将一个函数赋值给另一个函数类型的变量,也可以将一个函数作为参数进行传递,还能在函数调用中返回函数类型变量。 函数类型有两类:

         -内部(internal) 函数类型

         -外部(external) 函数类型

内部函数只能在合约中进行调用,也就是说只能在当前的代码块中进行调用,外部函数由一个地址和一个函数签名组成,可以通过外部函数调用传递或者返回。
函数类型表示成如下的形式:

function (<parameter types>) {internal|external} [pure|constant|view|payable] [returns (<return types>)]
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

**哇咔咔**

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值