我通过 npm 安装的是 Solc version 0.7.0。创建内部带有 mapping 的 Struct 时,会出现这条消息 "Struct containing a (nested) mapping cannot be constructed."
请看看下面的代码。
// SPDX-License-Identifier: MIT
pragma solidity 0.7.0;
contract Store {
struct Submission {
uint256 amount;
mapping(address => bool) votes;
}
Submission[] public submissions;
...
function addSubmission(
uint256 amount
) public {
Submission memory fresh = Submission({ // compiler reports the error here
amount: amount
});
submissions.push(fresh);
}
}
使用较早版本的 solc 时,同样的代码可以成功构建。
谢谢帮忙查看!
从英语翻译·查看原文My npm installation provides Solc version 0.7.0. Creating a Struct with a mapping inside emits the message: "Struct containing a (nested) mapping cannot be constructed."
Here is the code to look at:
// SPDX-License-Identifier: MIT
pragma solidity 0.7.0;
contract Store {
struct Submission {
uint256 amount;
mapping(address => bool) votes;
}
Submission[] public submissions;
...
function addSubmission(
uint256 amount
) public {
Submission memory fresh = Submission({ // compiler reports the error here
amount: amount
});
submissions.push(fresh);
}
}
With earlier solc versions, this same code builds successfully.
Thanks for taking a look!