记一次MYSQL存储过程调试过程
Solidity编程语言(13)--地址(Address)
这里要说的地址并不是通常的编程语言中的内存地址,而是交易地址。我们知道区块链进行价值传递的时候必须是通过一个地址传递到另一个地址,无论交易或者合约都离不开地址。因此把地址作Address为Solidity语言的内嵌数据类型会十分方便开发的,更重要的一点就是在Solidity中,所有合约都继承地址Address类型。这不仅仅是单纯的为了在语法上的实现,而在实际情况是合约本身就离不开地址,包括合约的部署和执行都需要地址的参与。
地址是两种类型,一种是address,一种是address payable。其中address payable相比address类型多了两个成员方法send和transfer,表示可以向address payable类型的变量进行转帐操作。
Solidity编程语言(12)--结构体struct
使用结构体struct可以自定义数据类型,结构体内可以包含除自身以外的所有数据类型,如果包含自身则会形成递归。
Solidity编程语言(10)--十六进制串
个人觉得十六进制串hex并不是一种Solidity的数据类型,因为你无法将hex作为一个类型去使用。
当把hex加到字面量前的时候,其作用就是限定了字面量的数据格式,必须是偶数位的[0-9a-fA-F]的字符串。这样当使用特定的数据类型去引用hex串的时候,隐式的会进行转换。比如string memory h = hex”010A31”,转换后的字符串h实际内容是\u0001\n1。
另外在使用bytes4类型的固定长度字节数组进行引用时,hex长度不能超过引用类型的实际长度,比如bytes4 b = hex”AABBccddee”是无法编译的。
Solidity编程语言(9)--mapping
###mapping的使用特性
mapping是用来保存键值对的,其书写方式与一般的编程语言有些不同,mapping(keyType => valueType)。mapping只能使用在合约的状态变量中,或者在函数内进行storage的引用,如var storage mappVal的用于存储状态变量的引用的对象,不能使用非状态变量来初始化这个引用,也就是mapping最终会保存在区块链上的,不可能是内存型变量。
Solidity编程语言(8)--字节数组
字节数组可以看作一种特殊的数组,其元素类型是字节。在类型声名时有其专有的声名方式。作为数组他有不固定长度字节数组和固定长度字节数组。
Solidity编程语言(5)--布尔型和整型
布尔型
bool类型同其他语言一样,取值为true或false, 其运算操作有!、||、&&、!=、==,注意这里并没有|、&