Solidity(二)

2022-02-18  本文已影响0人  a437e8f87a81

Visibility 

public  private  external internal 

以上四种修饰 function 

若要使用state variables 则无法使用external

public 

将会成为ABI的一部分 用于state variables 则会自动产生getter function

private 

在contract 中无法被访问修改 但是在block chain world state还是可见的

external 

放入ABI 中 可以被外部呼叫  无法被内部直接呼叫 f() 失败  this.f() 成功,处理大队列时候效率较高 不会做memory copy 操作

internal 只能被自己的合约或者衍生出的合约做呼叫

State  Mutability

pure  view default

pure:不读写

view:读不写

default:可读可写

constructor

contract 被立即执行的function 

我们会在这里设定资料的初始值

不宣告的时候solidity 会帮我们自动生成一个 constructor() {...}

一般创建合约最初的时候被执行

demo

contract PiggyBank {

    uint public goal;

    constructor(uint _goal) {

        goal = _goal;

    }

    receive() external payable {};

    function getMybanance() public view returns(uint) {

        return address(this).balances;

    }

    function withdraw() public {

        if(getMybanance() > goal) {

            selfdestruct(msg.sender);

        }

    }

}

Value Types

Value Types :总是以value的形式传递 (pass by value)

Reference Types:Array,Structs,Mappings

Mapping Types:{key,value}  Hash table

上一篇下一篇

猜你喜欢

热点阅读