我可以调用函数solidity内部的函数吗



我的合同中有一个函数,它接受2个数字,并在这2个数字之间给出一个随机数。我可以在同一合同中的其他函数中调用此函数吗?

类似于:

function point(min, max) public view returns (uint256) {
return /* A number betwwen "min" and "max" */;
}
function generateSVG() public pure returns (string memory) {
.
.
.
svg = string(abi.encodePacked(svg, "stroke-width='" , point(1, 5) , "' "));
.
.
.
}

谢谢:D

简短回答:有时。

长答案:

在solidity中,我们指定函数和状态变量的可见性。有4种类型的可见性:

  • 内部
  • 外部
  • 公共
  • 私人

除非明确定义,否则可见性默认为internal

内部

函数/状态变量仅对包含它的契约可见,或继承包含它的合约

外部

只能由其他合同调用

公共

任何合同,无论是否包含代码,都可以调用

私人

只有声明它的合约才能调用,而不是继承它的合约

小心,关于随机性

以太坊中没有真正的随机性。您可以创建具有blockhash/块高度的伪随机值,也可以使用提供真正随机性的预言机,如Chainlik

是的,您可以调用它,除非您将它定义为公共或私有(如果您想在同一约定中调用函数并限制为继承的约定(或内部。下面显示了一个示例。

`//SPDX许可证标识符:MIT实用主义稳固性^0.8.5;

合同函数调用{

uint public addition = add(1,2);
uint public product = multiply(add(2,3),add(2,1));
function add(uint a,uint b)public pure returns(uint output){
output = a+b;
}
function multiply(uint a,uint b)public pure returns(uint){
return a*b;
}

}`

最新更新