P57 、1-Solidity Types - 玩转 Solidity 数组 (Arrays)

学习目标

1、掌握Arrays的可变不可变的创建

2、深度理解可变数组和不可变数组之间的区别

3、二维数组

4、memory arrays的创建

5、bytes0~bytes32、bytes与byte[]对比

P58 、2-固定长度的数组(Arrays)系统讲解

固定长度类型数组的声明

pragma solidity ^0.4.;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [,,,,];
}

通过Length方法获取数组长度遍历数组求总和

pragma solidity ^0.4.;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [,,,,]; //通过for循环计算数组内部的值的总和
function numbers() constant public returns (uint){
uint num = ;
for(uint i= ; i < T.length ; i++){
num = num + T[i];
}
return num;
}
}

尝试修改T数组的长度

pragma solidity ^0.4.;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [,,,,]; function setTLength(uint len) public {
//报错
T.length = len;
}
}

PS:声明数组时,一旦长度固定,将不能在修改数组的长度。

尝试修改T数组内部值

pragma solidity ^0.4.;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [,,,,]; function setTIndex0Value() public {
T[] = ;
} //通过for循环计算数组内部的值的总和
function numbers() constant public returns (uint){
uint num = ;
for(uint i= ; i < T.length ; i++){
num = num + T[i];
}
return num;
}
}

PS:通过一个简单的试验可证明固定长度的数组只是不可修改它的长度,不过可以修改它内部的值,而bytes0~bytes32固定大小字节数组中,大小固定,内容固定,长度和字节均不可修改。

尝试通过push往T数组中添加值

pragma solidity ^0.4.;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [,,,,]; function pushUintToT() public {
//报错
T.push();
}
}

PS:固定大小的数组不能调用push方法向里面添加存储内容。

P59 、3-可变长度的Arrays(上)

可变长度类型数组的声明

pragma solidity ^0.4.;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [,,,,]; //通过for循环计算数组内部的值的总和
function T_Length() constant returns(uint) {
return T.length;
}
}

通过Length方法获取数组长度遍历数组求总和

pragma solidity ^0.4.4;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [1,2,3,4,5]; //通过for循环计算数组内部的值的总和
function numbers() constant public returns (uint){
uint num = 0;
for(uint i=0 ; i < T.length ; i++){
num = num + T[i];
}
return num;
}
}

尝试修改T数组的长度

pragma solidity ^0.4.4;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [1,2,3,4,5]; function setTLength(uint len) public {
T.length = len;
}
function TLength() constant returns(uint){
return T.length;
}
}

PS:对可变长度的数组而言,可随时通过length修改数组的长度。

尝试通过push往T数组中添加值

pragma solidity ^0.4.;

contract C{
//数组的长度为5,数组里面的存储的值的类型为uint类型
uint [] T = [,,,,]; function T_Length() constant public returns (uint){
return T.length;
} function pushUintToT() public {
T.push();
} //通过for循环计算数组内部的值的总和
function numbers() constant public returns (uint){
uint num = ;
for(uint i= ; i < T.length ; i++){
num = num + T[i];
}
return num;
}
}

PS:当往里面增加一个值,数组的个数就会加1,当求和时也会将新增的数字加起来。

P60 、4-可变长度的Arrays(下)

pragma solidity ^0.4.;

contract C{
uint [] T = new uint[](5); function C(){
for(uint i=;i<;i++){
T[i] = i+;
}
for(i=;i<;i++){
T.push(i+);
}
} //通过for循环计算数组内部的值的总和
function numbers() constant public returns (uint){
uint num = ;
for(uint i= ; i < T.length ; i++){
num = num + T[i];
}
return num;
}
}

P61 、5-Solidity 二维数组

P62 、6-创建 Memory Arrays
P63 、7-数组字面量 Array Literals 内联数组 Inline Arrays
P64 、8-创建固定大小字节数组/可变大小字节数组
P65 、Solidity Types - 枚举(Enums)
P66 、Solidity Types - Solidity 结构体(Structs)
P67 、Solidity Types - Solidity 字典/映射(Mappings)
P68 、集资(CrowdFunding)智能合约(Smart Contract)综合案例
P69 、单位(Units) 和 全局变量(Globally Available Variables)
P70 、1-Solidity 元组(Tuples)- 什么是元组,元组能做什么
P71 、2-Solidity 元组(Tuples)的使用
P72 、1-truffle framework初体验 - 如何编写智能合约

truffle官网:https://truffleframework.com/

开发环境为:ubuntu

先安装nodejs,安装完查看版本

node --version
v10.12.0

安装truffle框架

# npm install -g truffle
# truffle version
Truffle v5.0.1 (core: 5.0.1)
Solidity v0.5.0 (solc-js)
Node v10.12.0

P73 、2-建立简易的加密代币
P74 、3-通过zeppelin-solidity建立标准代币部落币「P 、BLC」

从零构建以太坊(Ethereum)智能合约到项目实战——学习笔记10的更多相关文章

  1. 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发

    智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...

  2. 零门槛,包教会。让你在5分钟内使用以太坊ERC20智能合约发行属于自己的空气币

    前言 目前区块链是互联网中最最火的风口,没有之一.我周围的很多朋友也加入了“炒币”行列,但很不幸,几乎都被“割韭菜”了.而经过我的几天研究,发现,如果自己要发行一种空气币,简直太简单了.只需要下面几个 ...

  3. 以太坊solidity智能合约-生成随机数

    Solidity随机数生成 在以太坊的只能合约中,没有提供像其他面向对象编程一样的生成随机数的工具类或方法.其实,所谓的随机数也是伪随机的,没有哪一种语言能够真正的生成随机数. 对于solidity来 ...

  4. 从零构建以太坊(Ethereum)智能合约到项目实战——第23章 从零构建和部署去中心化投票App,decentralization Voting Dapp

    P90 .1-从零构建和部署去中心化投票App-01 P91 .2-从零构建和部署去中心化投票App-02 P92 .3-从零构建和部署去中心化投票App-03 参考博文:http://liyuech ...

  5. 从零构建以太坊(Ethereum)智能合约到项目实战——第20章 搭建自己的私有链网络

    P75 .1-以太坊私网建立 .合约编译.部署完全教程(1) 使用此博文进行安装配置:https://blog.csdn.net/w88193363/article/details/79402074 ...

  6. 从零构建以太坊(Ethereum)智能合约到项目实战——第22章 玩转truffle framework 、Web3.js 框架

    P84 .1-玩转truffle framework.Web3.js 框架 内容介绍 truffle官方网站:https://truffleframework.com/ P85 .2-truffle ...

  7. 以太坊solidity智能合约语言学习资源整理

    暂时看到篇文章写的不错,先收集下来,后面有机会自己也整理一个 Solidity语言学习(一)Solidity语言学习(二)——Solidity的安装与编译Solidity语言学习(三)——智能合约编程 ...

  8. 以太坊区块链Java(EthereumJ)学习笔记:概述

    本系列文章介绍以太坊区块链基于Java语言的解决方案.通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助. 整体架构 以太坊的Java解决方案主要 ...

  9. 从零构建以太坊(Ethereum)智能合约到项目实战——第24章 IPFS + 区块链

    P93 .1-IPFS环境配置P94 .2-IPFS+P .IPNS+P .个人博客搭建 - 如何在IPFS新增一个文件P95 .3-IPFS+P .IPNS+P .个人博客搭建 - 通过ipfs创建 ...

随机推荐

  1. Linux - seq

    1. 概述 生成序列的命令 之前貌似写过 seq 命令, 这次单独拉出来再写一次吧 节操先放一放 2. 命令 1. 帮助 命令 # 输出我就不打了, # 这个命令可用, 证明组件可用 > seq ...

  2. 数据库备份与还原:mysqldump,source

    *数据库备份* 1.备份方法一:适用于myslam表: 直接将tb_name.frm.tb_name.myd.tb_name.myi三个文件保存,备份即可. 需要的时候直接解压到,移动到相应的数据库目 ...

  3. P2P头部平台退出后,普通人如何避开投资理财的“雷区”?

    编辑 | 于斌 出品 | 于见(mpyujian) 近期,P2P市场上不断传来不利消息,引起市场轩然大波,也打乱了投资者投资计划,是继续坚持自己的选择还是另择它路? 18日,陆金所作为千亿头部平台,宣 ...

  4. 熟悉这几道 Redis 高频面试题,面试不用愁

    1.说说 Redis 都有哪些应用场景? 缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力. 共享Ses ...

  5. Django - 后台admin不显示带auto_now, auto_now_add选项的字段

    https://stackoverflow.com/questions/6386172/datetimefield-doesnt-show-in-admin-system 解决办法 class Rat ...

  6. Multism中的一些特殊元器件在哪里找

    1.TLP521-1(光耦)在哪里找 2.单刀双掷开关 3.数码管 indicator:指示器 SEVEN_SEG_DECIMAL_COM_A_BULE: 七段带小数点共阳极,蓝色显示 A:阳极 K: ...

  7. 攻防世界 你知道什么是cookie吗?

    打开题目链接,提示我们查看cookie,cookie是HTTP协议中的一个重要参数,(对HTTP协议不是很熟悉的friends可以看看这个“HTTP协议其实就是这么简单”) 查看cookie的方法有很 ...

  8. Abaqus-GUI开发-RSG

    目录 1. GUI开发简介 2. 目标和消息 2.1消息类型和消息ID 2.2消息映射 3. 控件创建 1. GUI开发简介 Abaqus GUI程序开发时,可以采用两种方式创建GUI图形界面. (1 ...

  9. jquery--获取input radio单选框的值

    html <input type="radio" name="sex" value="man" checked> man < ...

  10. python函数1_参数,返回值和嵌套

    函数 将重复的代码,封装到函数,只要使用直接找函数 函数可以增强代码的模块化和提高代码的重复利用率 函数的定义和调用 格式 def 函数名([参数,参数...]): 函数体 定义函数 import r ...