首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接错误:“断言(this.f.address == address(This));”

链接错误:“断言(this.f.address == address(This));”
EN

Ethereum用户
提问于 2021-05-08 14:59:21
回答 1查看 392关注 0票数 0

在学习稳健性时,我从:https://docs.soliditylang.org/en/v0.8.4/types.html复制粘贴了这段代码。

代码语言:javascript
复制
// 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版本):

这个错误是什么,我如何修复它?

EN

回答 1

Ethereum用户

发布于 2021-05-09 16:31:27

因为您的“示例”契约在Remix中运行良好,所以您所看到的错误很可能来自于function f()上的VSCode中的其他行。

顺便说一句,除非您的智能合同已经有了一些以太,否则您可能不得不添加payable来实现g()功能。否则,您将得到以下错误:

注:如果您发送值,则应支付被调用的函数,并且所发送的值应小于当前余额。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/98576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档