函数

重定义

不支持重定义,会在编译时候报错

pragma solidity ^0.4.0;

contract test {
uint public a =100;
function changeA () view returns(uint ){
a = 700;
return a;
}
}

继承

  • 属性继承:public  internal
  • 方法继承:public  internal  external
  • 继承重载
  • 多重继承按顺序,同名属性(方法)按最后一个为准,如果子合约自身有,覆盖其他

构造函数

在合约部署时候就自动执行

  • 使用合约同名的方法名,0.4版本
  • 直接使用constructor()函数
pragma solidity ^0.4.0;

contract test {
address public add;
constructor(){
//合约部署之际就会将当前地址赋值给add
add = msg.sender;
}
}

析构函数

kill合约

pragma solidity ^0.4.0;

contract father{
address add;
uint public a = 1;
constructor (){
add = msg.sender;
}
function ins() {
a += 10;
}
//执行之后,再次点击a报错提示
function kill(){
if(add == msg.sender)
selfdestruct(add);
}
}

constant

  • 函数内部的constant在4.0版本中和view等价,在5.0版本中被废弃
  • 全局变量,constant变量,局部变量没有这个属性
  • 全局变量加上constant属性,就不能被修改

getter

  • public修饰符默认生产get方法,用于外部调用,不能在函数内部调用

    function get() external view returns(uint){
    return a;
    }
  • mapping特殊,会生成以下函数

        mapping(int =>string) map;
    function mapTest(int _a) view returns(string){
    return map[_a];
    }

modifier

pragma solidity ^0.4.0;

contract test {
uint public a;
address public add;
constructor(){
add = msg.sender;
}
modifier OnlyAdd{
require(add == msg.sender);
_;
}
//首先会判断是否满足modifier中require的条件,如果满足则执行语句,不满足则回滚
function changeA(uint _a) OnlyAdd{
a = _a;
}
}

执行顺序(1)

pragma solidity ^0.4.0;

contract test {
uint public a;
modifier m1{
a = 1;
_;
a = 2;
}
//讲_中的内容全部替换成changeA中的内容
function changeA() m1{
a = 100 ;
}
}

执行顺序(2)

pragma solidity ^0.4.0;

contract test {
uint public a;
modifier m1{
a = 1;
_;
a = 2;
}
modifier m2{
a = 3;
_;
a = 4;
}
//执行顺序是,先遇到m1,执行a=1,接着将m2替换m1中的_
//执行m2中的a=3,遇到_,用函数体替代之,执行完m2
//最后执行m1中剩余部分
function changeA() m1 m2{
a = 100 ;
}
}

【Solidity】学习(3)的更多相关文章

  1. solidity学习-cryptoPunks为实例

    在这里使用cryptoPunks为实例来进行solidity的介绍,一般这些内容理解了就能够进行相对简单的智能合约的编写了,同时会添加一些我认为也十分重要的内容学习文档为http://solidity ...

  2. solidity 学习笔记(7)内联汇编

    为什么要有内联汇编? //普通循环和内敛汇编循环比较 pragma solidity ^0.4.25; contract Assembly{ function nativeLoop() public ...

  3. solidity 学习笔记(6)call 函数

    call() 方法 call()是一个底层的接口,用来向一个合约发送消息,也就是说如果你想实现自己的消息传递,可以使用这个函数.函数支持传入任意类型的任意参数,并将参数打包成32字节,相互拼接后向合约 ...

  4. solidity 学习笔记(5)接口

    接口:不用实现方法,仅仅定义方法. pragma solidity ^; contract cat{ //cat实际上实现了接口animalEat,因为他们有相同的方法. string name; f ...

  5. solidity 学习笔记(3) 函数修饰符/继承

    修饰符: 函数修饰符有 constant  view pure 其中 constant和view的功能是一样的  不会消耗gas 也就是说不会做任何存储   constant在5.0以后的版本中被废弃 ...

  6. solidity 学习笔记 2 (二维数组)

    solidity 二维数组: pragma solidity ^0.4.23; contract twoArray{ uint[2][3] grade =[[20,30],[40,50],[45,60 ...

  7. solidity学习笔记

    一 pragam solidity ^0.4.23; contract helloword{ string public  name ="hello"; function getN ...

  8. 以太坊智能合约开发 Solidity学习

    1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int nu ...

  9. solidity 学习笔记(4)library库

    library库的申明: library SafeMath{ functrion mul(uint a,uint b) public returns (uint){ uint c= a*b; asse ...

  10. cryptopunks的代码解释

    1.imageHash就是将punk所有图像合在一起的那张图punks.png进行hash得到一个值,并将该值存储到链上,用处就是你可以通过将图像hash然后跟该值对比看图像对不对.这就是它的用处,在 ...

随机推荐

  1. 使用C编程语言实现AVL树

    本文将介绍AVL树及其插入.删除操作,最后使用C编程语言实现基于平衡因子(balance factor)的AVL树. 什么是AVL树? AVL树(AVL tree)是前苏联计算机科学家Adelson- ...

  2. SourInsight4 配置视野内引用高亮

  3. C#少量数据分页方法

    string sql = @"select [Name],[Value],[TypeCode] from [dbo].[SYS_Parameter] WHERE TypeCode = 'Us ...

  4. Linux samba服务搭建

    实验准备: 准备两台机器,server0(172.25.0.11)和deskop0(172.25.0.12),要求在server0上实现samba共享,在desktop0上访问共享. 1.允许mark ...

  5. Golang学习---常用库

    1. 路由库:github.com/julienschmidt/httprouter 2. mysql驱动:github.com/go-sql-driver/mysql

  6. 转)Ubuntu安装teamviewer

    以下内容提炼于:https://www.cnblogs.com/wmr95/p/7574615.html 官网下载相应包:https://www.teamviewer.com/zhcn/downloa ...

  7. [leetcode]92. Reverse Linked List II反转链表2

    Reverse a linked list from position m to n. Do it in one-pass. Note: 1 ≤ m ≤ n ≤ length of list. Exa ...

  8. why?

    优点 充分利用多核CPU的计算能力: 方便进行业务拆分,提升应用性能 缺点 上下文切换 注意线程安全,避免死锁

  9. ES查询-match VS match_phrase

    我们以一个查询的示例开始,我们在student这个type中存储了一些学生的基本信息,我们分别使用match和match_phrase进行查询. 首先,使用match进行检索,关键字是“He is”: ...

  10. 位移运算 << >> >>>

    位移运算都是补码的运算 左移<<:左移后第一位可能是1,也可能是0,所以可能是正数,也可能是负数,正负都补0 右移>>:抹掉最后一位,近似于十进制值除以2,负数右移高位补1,正 ...