我可以在函数 solidity 中调用函数吗?

Can I call a function inside a function 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 种类型:

  • 内部
  • 外部
  • Public
  • 私人

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

内部

function/state 变量仅对包含它的合约可见,或继承包含它的合约

外部

只能被其他合约调用

Public

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

私人

只能调用声明它的合约,不能调用继承它的合约。

注意随机性

以太坊中没有真正的随机性。您可以创建具有 blockhash/block 高度的 pseudo-random 值,也可以使用提供真正随机性的 oracle,例如 Chainlik