Solidity函数view,pure,constant的用法

函数访问权限:public,external,private,internal

//子类可以得到父类下面的方法,父类用了public,external的话

pragma solidity ^0.5.;

contract Animal{
function tets1() pure public returns(uint){
//如果是public的话,外部是可以访问的,external外部也是可以访问的,private,interna只能是内部访问
return ;
}
} contract Cat is Animal{ }

//internal,private是只鞥是自己的内部使用,子合约是不能继承他的
//exteral,public子合约是可以继承的

constant:

如果加了constant的话,就不用调用call方法来获取值,比如在终端的时候不用调用这个call方法,直接可以打印出来了,可以返回变量的值

uint  public  n=100;

function speed() constant returns(uint){
return n;
}

public:

说明是外部的话就可以调用的,在合约里面是可以调用这个值的string   name ,string  public  name,后者在合约里面是有显示的

view:

既没有返回什么状态变量的值,也没有什么存粹的值的话(return 10,'hello'这些的)
比如返回return msg.render就可以使用view

pure:

就是很纯粹的意思,就是具体返回什么值回来,不是变量
如果下面是return p(带有状态变量的值)的话,不能用这个pure,得用constant,如果是return 12具体的某个数值的话,就可以用pure

pragma solidity  ^0.5.;

contract  test{
  //属性
uint p;
address _owner;

  //构造函数
function car() public{
p=;
_owner=msg.sender;
} //public的话可以外部调用
function get() public returns(uint){
return p;
}
//view,当不返回存粹的值或者是变量的时候,比如msg.sender使用
function get1() view public returns(address){
return msg.sender
} //pure,返回存粹的值使用,123,'hello'
function get2() pure public returns(uint){
return }
//返回带有状态变量的值,_owner
function get3() constant public returns(address){
return _owner
}
}
上一篇:webpack-dev-server 设置反向代理解决跨域问题


下一篇:oracle追加表空间