<kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

              <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                      <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                              <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                      <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                              <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                                      <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                                              <kbd id='H69bMxpjXQ8sjda'></kbd><address id='H69bMxpjXQ8sjda'><style id='H69bMxpjXQ8sjda'></style></address><button id='H69bMxpjXQ8sjda'></button>

                                                                  太阳城娱乐城_区块链学堂(第九课):Int范例+数组范例
                                                                  作者:太阳城娱乐城 浏览:855  发布日期:2017-12-10

                                                                  int / uint: Signed and unsigned integers of various sizes. Keywords uint8 to uint256 in steps of 8 (unsigned of 8 up to 256 bits) and int8 to int256. uint and int are aliases for uint256 and int256, respectively. 引用自here

                                                                  int & uint

                                                                  int代表有标记的整型,也就是可以带负数

                                                                  uint代表没有标记的整型,也就是从0开始的正整数

                                                                  uint8 代表为2的8次方

                                                                  uint256 代表为2的256次方

                                                                  uint 默以为 uint256

                                                                  int8 代表为-2的7次方到正2的7次方

                                                                  int256 代表为-2的255次方,到正2的255次方;

                                                                  int 默以为int256

                                                                  整型操纵符

                                                                  comparisons: <=, <, ==, !=, >=, >

                                                                  bit operator: &, |, ^,~

                                                                  arithmetic operator: +, -, *, /, %, **, <<, >>

                                                                  几个整型的现实代码

                                                                  最简朴的整型合约,f(n) = 8 * n;

                                                                  pragma solidity ^0.4.4; contract DemoTypes { function f(uint a) returns (uint b) { uint result = a * 8; return result; } }

                                                                  输入width & height,,返回两者相乘的智能合约,插手了if呼吁

                                                                  contract DemoTypes { function f2(int width, int height) returns (int square) { if (width < 0 || height < 0) throw; int result = width * height; return result; } }

                                                                  输入N,用For轮回来计较阶乘数

                                                                  contract DemoTypes { /*输入N,计较N的阶乘,轮回实现*/ function f3(uint n) returns (uint jiecheng) { if (n == 0) throw; uint result = 1; for (uint i=1; i<=n; i++) { result *= i; } return result; } }

                                                                  输入N,用For轮回来计较1+2+3+..+N求和。

                                                                  contract DemoTypes { /*计较从1到N的求和*/ function f4(uint n) returns (uint sum) { if (n == 0) throw; uint result = 0; for (uint i=0; i<=n; i++) { result +=i; } return result; } }

                                                                  在合约中写入测试代码

                                                                  区块链的技能和早年的技能最大的差异就在于开源化,尤其是智能合约部门,必必要开源。因此测试代码就很是重要; 以是提议各人在撰写智能合约到时辰都能顺带把测试代码写上这个也是成为以太坊开源社区孝顺者的必备前提。

                                                                  以是我们可以在上面的f4()要领的下方,添加一部门测试代码代码如下:

                                                                  contract DemoTypes2 { uint public testResult; /*计较从1到N的求和*/ function f4(uint n) returns (uint sum) { if (n == 0) throw; uint result = 0; for (uint i=0; i<=n; i++) { result +=i; } return result; } function g() { testResult = f4(3); } }

                                                                  增进了一个可调查的变量uint public testResult;, 然后在function g()中挪用f4()要领,这个时辰可以通过在browser-solidity中调查变量testResult即可。

                                                                  虽然这个要领是费时艰辛的,以太坊的白皮书内里,没有提供在智能合约中的assert要领,由于更但愿智能合约自己短小精壮,但在Truffle中我们可以轻松的行使测试框架来实现对智能合约的测试事变。在后头的章节中我们会详细来讲怎样测试一个智能合约。

                                                                  下一章节,我们将先容最常用的string范例,敬请等候。

                                                                  —————————————————————————————————

                                                                  数组范例基本

                                                                  solidity说话中,int/uint 数组范例的界说方法如下: uint[] a; int[] b;

                                                                  数组范例的成员有两个length和 push。 push 是给数组范例增进一个元素,同时该数组的长度+1length 返回当前数组的长度。有一个元素,则返回1,有两个元素则返回2.

                                                                  数组范例拭魅战代码

                                                                  从一个最简朴的int数组合约开始

                                                                  pragma solidity ^0.4.8; contract DemoTypes4 { uint[] public intArray; function add(uint a) { intArray.push(a); } }

                                                                  上面代码很简朴,界说了一个public的int数组intArray, 以及一个要领add(uint a), 在browser-solidity中我们可以先add(111)& add(222). 然后挪用intArray[0] & intArray[1],来查察功效,

                                                                  功效表现如下图所示:

                                                                  该合约在Mist也一样陈设,也可以通过查察变量intArray来查察数值。

                                                                  给上面的合约DemoTypes4增进一个要领 lengthOf()

                                                                  contract DemoTypes4 { uint[] public intArray; function add(uint a) { intArray.push(a); } function lengthOf() returns (uint len) { uint result = intArray.length; return result; } }

                                                                  代码很简朴,直接返回数组范例intArray的length. 祈望值是2个,我们可以通过browser-solidity来查察功效:

                                                                  在上面的基本之上,再增进两个要领,update& valueOf

                                                                  通过增进valueOf& update我们实现了对数组范例的 修改查察成果。CRUD至此已完成了CRU,只缺个Delete了。

                                                                  代码如下:

                                                                  contract DemoTypes4 { uint[] intArray; function add(uint a) { intArray.push(a); } function lengthOf() returns (uint len) { uint result = intArray.length; return result; } function update(uint _index, uint _value) { intArray[_index] = _value; } function valueOf(uint _index) returns (uint _value) { uint result = intArray[_index]; return result; } }

                                                                  该代码在browser-solidity中执行通过,限于篇幅,就不贴截图了。

                                                                  最后,再增进一个delete要领

                                                                  Solidity内里没有对数组范例提供生成的delete操纵,因此delete操纵写起来略为伟大。

                                                                  起主要将删除的元素之后的元素逐个前移,然后再删除最后一个元素,最后还要将数组长度镌汰1

                                                                  详细代码如下:

                                                                  function deleteAt(uint _index) { uint len=intArray.length; if (_index >= len) return; for (uint i = _index; i<len-1; i++){ intArray[i] = intArray[i+1]; } delete intArray[len-1]; intArray.length--; }

                                                                  完备的uint数组范例的增编削查以及长度的代码如下

                                                                • 上一篇:没有了
                                                                • 下一篇:JavaScript中的范例