在学习稳健性时,我从:https://docs.soliditylang.org/en/v0.8.4/types.html复制粘贴了这段代码。
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.6.4 <0.9.0;
contract Example {
function f() public payable returns (bytes4) {
assert(this.f.address == address(this));
return this.f.selector;
}
function g() public {
this.f{gas: 10, value: 800}();
}
}Linter:解析错误:无关的输入')‘期待';’未定义‘

我使用的是VSCode,带有solidity版本:0.0.113,以及solc版本:0.8.4+commit.c7e474f2.Darwin.appleclang
在Remix中,我没有看到这个错误(使用相同的solc版本):

这个错误是什么,我如何修复它?
发布于 2021-05-09 16:31:27
因为您的“示例”契约在Remix中运行良好,所以您所看到的错误很可能来自于function f()上的VSCode中的其他行。
顺便说一句,除非您的智能合同已经有了一些以太,否则您可能不得不添加payable来实现g()功能。否则,您将得到以下错误:
注:如果您发送值,则应支付被调用的函数,并且所发送的值应小于当前余额。
https://ethereum.stackexchange.com/questions/98576
复制相似问题