Blockchain Solidity:如何从单个值初始化固定数组?
我想将单个参数作为数组传递到函数调用中:Blockchain Solidity:如何从单个值初始化固定数组?,blockchain,ethereum,solidity,smartcontracts,Blockchain,Ethereum,Solidity,Smartcontracts,我想将单个参数作为数组传递到函数调用中: contract MyToken is StandaloneERC20 { function initialize( address owner, address minter, address[] memory pausers ) public initializer { address[] memory minters = [minter]; Sta
contract MyToken is StandaloneERC20 {
function initialize(
address owner,
address minter,
address[] memory pausers
) public initializer {
address[] memory minters = [minter];
StandaloneERC20.initialize("MyToken", "MTK", uint8(18), minters, pausers);
}
StandaloneERC20.initialize
需要一个数组作为第四个参数minters
:
function initialize(
string memory name, string memory symbol, uint8 decimals, address[] memory minters, address[] memory pausers
) public initializer {
但是,使用我的代码,我得到了solidity 0.5.7的以下编译器错误:
TypeError: Type address[1] memory is not implicitly convertible to expected type address[] memory.
address[] memory minters = [minter];
^---------------------------------^
我还尝试将minter作为数组参数传递:
contract MyToken is StandaloneERC20 {
function initialize(
address owner,
address minter,
address[] memory pausers
) public initializer {
StandaloneERC20.initialize("MyToken", "MTK", uint8(18), [minter], pausers);
}
但由于编译器错误,这似乎与我预期的完全不同:
Member "initialize" not found or not visible after argument-dependent lookup in type(contract StandaloneERC20).
StandaloneERC20.initialize("MyToken", "MT", uint8(18), [minter], pausers);
^------------------------^
如何将单个参数作为数组传递?这是一种使用单个参数声明数组的方法
contract MyToken is StandaloneERC20 {
function initialize(
address owner,
address minter,
address[] memory pausers
) public initializer {
address[] memory minters = new address[](1);
minters[0] = minter;
StandaloneERC20.initialize("MyToken", "MTK", uint8(18), minters, pausers);
}
}
这是关于Soliditydocs的