繁体   English   中英

坚固性:ParserError:预期';' 但得到'('

[英]solidity: ParserError: Expected ';' but got '('

  1. 首先。我想检查一下“solidity: ParserError: Expected ';' 但是得到了'('"想要表达。
  2. 如何改进我的代码以通过它?
//SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0<0.9.0;

contract Withdraw{
    constructor()payable{}
    fucntion withdrawByTransfer() public {
        paybale(msg.sender).transfer(1 ether);
    }

    fucntion withdrawBySend()public{
        bool success = paybale(msg.sender).send(1 eth);
        require(succeess);
    }

    fucntion withdrawByCall() public returns(bytes memory){
        (bool succeess,bytes memory result) = payable(msg.sender).call{value: require(success)};

        return result;
    }
}

在此处输入图像描述一些参考Solidity ParserError: Expected ';' 但得到了'{'

Solidity - ParserError:预期的';' 但得到'['

首先修复您的拼写错误 function 和应付是关键字拼写错误是不能容忍的。 这将解决预期的问题; 错误

其次,一个重大问题在于您的第三个 function。 编程中的一个基本规则是首先执行表达式的右侧,所以在这一行

(bool success,bytes memory result) = payable(msg.sender).call{value: require(success)};

require 语句中的成功是不可见的,因为它尚未使用值初始化。 但即使成功确实有一个值,参数“值”也不接受要求语句作为值,这就是你修复它的方法。

function withdrawByCall() public payable returns(bytes memory){
        (bool success,bytes memory result) = payable(msg.sender).call{value: msg.value}(" ");
        require(success);
        return result;
    }

这是完成的代码

//SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0<0.9.0;

contract Withdraw {
    constructor() payable {}

    function withdrawByTransfer(uint256 amount) public payable {
        payable(msg.sender).transfer(amount);
    }

    function withdrawBySend(uint256 amount) public payable {
        bool success = payable(msg.sender).send(amount);
        require(success, "Failed to send Ether");
    }

    function withdrawByCall(uint256 amount) public returns(bytes memory) {
        (bool success, bytes memory result) = payable(msg.sender).call{value: amount}("");
        require(success, "Failed to withdraw Ether");

        return result;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM