本章节主要讲述智能合约中访问权限问题,主要关键字external,public,internal,private之间的区别及应用
external:
外部函数是合约接口的一部分,所以我们可以从其它合约或通过交易来发起调用。一个外部函数f,不能通过内部的方式来发起调用,(如f()不可以,但可以通过this.f())。外部函数在接收大的数组数据时更加有效。
public:
公开函数是合约接口的一部分,可以通过内部,或者消息来进行调用。对于public类型的状态变量,会自动创建一个访问器。
internal:
这样声明的函数和状态变量只能通过内部访问。如在当前合约中调用,或继承的合约里调用。需要注意的是不能加前缀this,前缀this是表示通过外部方式访问。
private:
私有函数和状态变量仅在当前合约中可以访问,在继承的合约内,不可访问。
这里的权限只是表示合约与合约之间,对于任何观察者来说这些都是可见的
几种默认状态
1.状态变量
pragma solidity ^0.4.0;
contract HelloWorld{
uint a;
uint internal b;
uint private c;
uint public d;
function d() constant returns(uint){
return 123;
}
}
状态变量默认类型为internal,internal和private类型的变量不能被外部访问,变量类型为public

最低0.47元/天 解锁文章
4572

被折叠的 条评论
为什么被折叠?



