最近在写智能合约,对常见的关键字简单总结一哈...
函数类型定义如下:
function (<parameter types>) {public | private | internal | external} [modifier] [pure|constant|view|payable] [returns (<return types>)]
1、public/private/internal/external 函数可见性分析
- public : 任意访问(合约中函数默认);公共函数是合约接口的一部分,可以通过内部调用或通过消息调用。对公共状态变量而言,会有的自动访问限制符的函数生成。
- private :仅当前合约内;私有函数和状态变量仅仅在定义该合约中可见, 在派生的合约中不可见,可防止其他合约访问和修改信息。
- internal :仅当前合约及所继承的合约(状态变量声明时默认)
- external : 仅外部访问(在内部也只能用外部访问方式访问);外部函数是合约接口的一部分,这意味着它们可以从其他合约调用, 也可以通过事务调用。外部函数f不能被内部调用(即 f()不执行,但this.f()执行)。外部函数,当他们接收大数组时,更有效。
public
当一个状态变量的权限为public类型时,它就会自动生成一个可供外部调用的get函数
只有public类型的函数才可以供外部访问
状态变量声明时,默认为internal类型,只有显示声明为public类型的状态变量才会自动生成一