【发布时间】:2021-11-18 12:38:11
【问题描述】:
在 Solidity 中,我们有四种访问方式。其中两个是private 和internal。
如果两者都可以在智能合约内部使用,并且部署后两者都不可见,有什么区别?
【问题讨论】:
标签: blockchain solidity smartcontracts
在 Solidity 中,我们有四种访问方式。其中两个是private 和internal。
如果两者都可以在智能合约内部使用,并且部署后两者都不可见,有什么区别?
【问题讨论】:
标签: blockchain solidity smartcontracts
internal 属性可以从子合同(但不能从外部合同)访问。
private 属性即使从子合同也无法访问。
pragma solidity ^0.8;
contract Parent {
bool internal internalProperty;
bool private privateProperty;
}
contract Child is Parent {
function foo() external {
// ok
internalProperty = true;
// error, not visible
privateProperty = true;
}
}
您可以在文档部分Visibility and Getters 中找到更多信息。
【讨论】:
访问类型:
public - 可以在合约部署时使用,也可以在继承合约中使用
external可以在合约部署时使用,不能在继承合约中使用
internal - 部署合约时不能使用,可以在继承合约中使用
private - 部署合约时不能使用,不能在继承合约中使用
【讨论】: