Solidity函数view,pure,constant的用法

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

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

 

pragma solidity ^0.5.7;


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

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.7;

contract  test{
  //属性
uint p; address _owner;
  //构造函数 function car()
public{ p=100; _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 123 } //返回带有状态变量的值,_owner function get3() constant public returns(address){ return _owner } }

 

posted @ 2019-04-05 05:21  风不再来  阅读(998)  评论(0编辑  收藏  举报