公司资料
本领初学 | Solidity编程讲话 : 布尔型和整型 | BTC
发布日期:2022-05-25 19:07    点击次数:192

本领初学 | Solidity编程讲话 : 布尔型和整型 | BTC

1、HelloWorld\r\n智能合约就像是一份合兼并样,你书写的每个代码都是公约的本色。是以合约依然部署,合约本色就无法修改,好比你和他人签苹写了公约之后,是没法再修改的。这亦然恰是基于区块链不可改削的特质。 活着俗的编程讲话中,一般会使用轨范输出来打印 Hello World ,Solidity行为一门智能合约编程讲话,是有别与一般的编程讲话,他是基于以太坊,而且是用来编写 合约 的。是以这里不再使用 HelloWorld 行为示例,而是使用Solidity官网中的一个初学示例。\r\n

pragma solidity >=0.4.0 <0.6.0;\r\ncontract SimpleStorage {\r\n    uint storedData;\r\n    function set(uint x) public {\r\n        storedData = x;\r\n   }\r\n    function get() public view returns (uint) {\r\n        return storedData;\r\n   }\r\n}
\r\n以上代码即是一个使用Solidity编写的名为SimpleStorage的合约。

1.1 第一滑代码是用来指定Solidity的讲话版块,pragma solidity是固定体式,后边加上版块号,版块号通过边界来详情的,即大等于0.4.0,小于0.6.0。在网上会频繁看到^0.4.21这么的书写神志,这种体式是援手在0.5.2及之前的版块。比如在remix-ide环境中编写pragma solidity ^0.5.3,则会请示编译误差:browser/Untitled.sol:3:1: ParserError: Source file requires different compiler version (current compiler is 0.5.2+commit.1df8f40c.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version。

1.2 第二代码创建名为SimpleStorage的合约。contract 是重要字,SimpleStorage为合约称号。这个近似于java的类界说通常,class Person{},比拟容易交融。

1.3 第三行代码定了一个无标识整数storedData,这个情景变量将会保存在区块链上,好比写入数据库进行了经久化,什么时刻都不错进行读取。

1.4 界说set才智,对情景变量storedData进行赋值,其中public是重要定,修饰set才智不错被合约外部调用。

1.5 界说get才智,复返情景变量storedData的值,关于复返值的书写稍有不同,重要字是returns,而不是return,另外复返值不错是多个,使用圆括号包起来。

这即是一个简便的Solidity编写的合约了,有编程教会的人很容易交融。\r\n2、布尔型和整型\r\n2.1 布尔型\r\nbool类型同其他讲话通常,取值为true或false, 其运算操作有!、||、&&、!=、==,冷静这里并莫得|、&。\r\n

pragma solidity >=0.4.22 <0.6.0;\r\ncontract EgBool {\r\n    bool isOne;\r\n    bool isTwo;\r\n    function operation() public {\r\n        isOne = true;\r\n        if (isOne){\r\n            // dosomething\r\n       }

if (!isOne){\r\n // dosomething\r\n }

if (isOne || isTwo ){\r\n // dosomething\r\n }

if (isOne && isTwo ){\r\n // dosomething\r\n }

if (isOne != isTwo ){\r\n // dosomething\r\n }

if (isOne == isTwo ){\r\n // dosomething\r\n }\r\n }\r\n}

\r\n2.2 整型\r\n整型包含无标识uint和有标识int两种类型,每种类型有多种长度,比如uint8、uint64、int128等等,长度边界是8至256,收支8个长度,8,16,24,32…256。其中uint和uint256通常,int和int256通常。运算操作有比拟、位操作和算术操作三种。\r\n\r\n\t比拟操作:<= , < , == , != , >= , >。\r\n\t位操作: &(与) , |(或) , ^ (异或), ~ (非)。\r\n\t算术操作:+ , - , * , /, % , (乘方,求幂) ,<<(左移) , >>(右移)其中左移和右移操作,a<<b,不错交融为a乘以2的b次方,暗意为a*2b,同理右移a>>b暗意为a/2**b。\r\n\r\n
pragma solidity >=0.4.22 <0.6.0;\r\ncontract EgInt {\r\n    int i = 0;\r\n    int8 i8 = -1;\r\n    int256 i256 = 256;

uint ui = 0;\r\n uint ui8 = 1;\r\n uint256 ui256 = 256;

function operation() public {\r\n if ( i < i8 || i <= i8 || i == i8 || i != i8 || i > i8 || i >= i8 ){\r\n //dosomeing\r\n }

int a;\r\n int b;\r\n int c;\r\n c = a & b;\r\n c = a | b;\r\n c = a ^ b;\r\n c = ~ b;

c = a + b;\r\n c = a - b;\r\n c = a * b;\r\n c = a / b;\r\n c = a % b;\r\n c = a << b;\r\n c = a >> b;

//c = a**b;\r\n uint d;\r\n uint e;\r\n uint f;\r\n f = d**e;\r\n //c = d**e;\r\n }\r\n}

\r\n \r\n冷静:\r\n\r\n\t有标识整数是不省略使用**操作。\r\n\t有标识和无标识不成进行类型调遣,不成同期参数运算,比如c = d + e。\r\n\r\n 

作者:感谢蓝莲花团队整理供稿。

注:如有问题请不才方留言有关咱们本领社群。

汪晓明博客:http://wangxiaoming.com/

汪晓明:HPB芯链首创人,BTC专栏作者。十余年金融大数据、区块链本领建立教会,曾参与创建银联大数据。主创区块链陶冶视频节目 明说 30多期,编写了 以太坊官网文档中语版 ,并行为主要作者编写了 区块链建立指南 ,在中国区块链社区以ID 蓝莲花 闻明。