Solidity是一种面向对象的高级语言,用于创建智能合约。Smart contracts
,是决定Ethereum 状态中账户行为的程序。Solidity是一种静态类型的语言。它支持继承、库和复杂的用户定义类型以及其他功能。通过 Solidity,你可以为投票、众筹、盲拍和多签名钱包等用途创建合约。solidity中有各种数据类型,Value Type是其中之一。在这篇博客中,我们将看到solidity 中的一些价值类型。
Solidity中的类型
Solidity是一种静态类型的语言,这意味着我们需要指定每个变量的类型。Solidity提供了几种基本的类型,我们可以将它们结合起来形成复杂的类型。
其中一个类型是 值类型。因此,让我们看看什么是值类型。
值类型
以下类型也被称为值类型,因为这些类型的变量将总是通过值传递,即当我们把它们作为函数参数或在赋值中使用时,它们总是被复制的。
布尔型
首先,我们将讨论布尔类型。布尔值 由bool.
表示,布尔类型的值可以是真或假。适用于布尔类型的运算符是-
- !- 逻辑上的否定
- && - 逻辑上的和
- || - 逻辑上的或
- 平等 - ==
- 不平等 - !=
逻辑 "和 "和 逻辑 "或 "运算符遵循与其他编程语言中相同的短路 规则。例如,在表达式 op1(x) || op2(y)
中,如果op1(x)
评估为真,op2(y)
将不会被评估。
整数
整数类型由关键字uint8到uint256 和int8到int256分别表示unsigned
和signed
整数。 **uint**
和 **int**
是对 **uint256**
和 **int256**
的别名。
我们可以对整数进行的操作有------。
- 比较。
<=
,<
,==
,!=
,>=
,>
(结果值是bool
) - 位运算符。
&
,|
,^
(按位排他或),~
(按位否定) - 移位运算符。
<<
(左移),>>
(右移) - 算术运算符。
+
,-
, 单数-
(只适用于有符号的整数),*
,/
,%
。**
固定点数字
定点数与浮点数数据类型相似,但主要区别在于,在定点数中,我们需要指定整数部分 和小数部分所需的位数,而在浮点数中则不需要。
我们使用fixed/ufixed关键字来指定不同大小的定点数字 。我们需要以如下方式指定定点数字--fixedMxN
和ufixedMxN
。这里M
表示类型所占的位数,N
表示有多少个小数点。
Solidity还不完全支持定点数字,因此我们可以声明定点数字,但不能把它们赋值给它们或从它们赋值。
- 比较。
<=
,<
,==
,!=
,>=
,>
- 算术运算符。
+
,-
, 一元的-
,*
,/
。%
地址
地址类型是solidity特有的东西。它是一个数据类型,用于存储代表Ethereum地址的20字节的值。地址类型有两个版本,即地址和地址支付。
address
: 地址类型保存一个20字节的值(一个以太坊地址的大小)。address payable
: 它与address
相同,但有额外的成员transfer
和send
。
这两种类型的主要区别是:address payable
是一个你可以发送以太币的地址,而普通的address
不能发送以太币。
类型转换。
我们可以隐式地从address payable
转换到address
,而从address
转换到address payable
必须通过payable(<address>)
明确地进行。
uint160
、整数字头、bytes20
和合同类型允许与address
进行显式转换。我们将在接下来的博客中学习合约类型和其他一些类型。因此,请继续关注即将发布的博客。