数据形态

数据形态在合约当中扮演着什么角色呢之前有介绍过状态变数可以储存一些变化值,而储存什么类型的值就是所谓的数据形态,不同的数据形态可以处理的事物也有所不同,因此我们也需要了解一些基本的数据形态以及特性之后,未来开发合约之时才能更加稳固。

而Solidity的基本数据形态如下图:

Boolean

主要是提供简单的「是」或「否」的表达方式,而在程式语言的世界里会用「true」、「false」描述。

Integer

Integer的种类就非常多了,根据限定大小分为不同的整数型别,包括: int、uint、int8、uint8、int256…,主要用来存放数字,并用于计算。

String

基本上就是储存想要展示的字眼,但这边要注意的是仅支援utf-8,因此直接输入中文字串会被编译器提示「ParserError: Invalid character」。

Address

Address则是非常特殊的一种数据形态,因为智能合约总是围绕着虚拟货币钱包,而钱包的地址正是Address这种数据形态,而地址的型态又区分为以下两种:

仅收款的地址: address。 可付款的地址: address payable,不同之处在于多了「 transfer」跟「send」的功能。

流程控制

智能合约之所以能够那么智能就是因为具备了流程控制的功能,什么条件下触发什么样的处理机制,过程就如同机器人一般,不需经由人工干预,逐关审查,

流程结构

以下的流程关键字是我们在合约中常常会看到的控制撰写方式,不外乎就是判断什么条件成立之后做什么事情,或者连续做清单中的待办事项。

结语

我们可以看到简单的几个流程加上数据形态就能够变化出许多复杂的结果,这就是智能合约的强大之处,提供了材料,而能够做出什么成品就取决于我们的创造力,所以市面上才会创造出各式各样的智能合约,但魔鬼都藏在细节里,如果我们完全外行,仅相信这份合约是完美的,安慰自己世界都是美好的,那么就很容易落入陷阱,因此就算不会撰写合约至少也要能够看得懂合约,才不会平白无故的损失。