我可以在函数 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
我的合同中有一个函数,它接受 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