browser/payable.sol:14:34: Error: Expected token LBrace got ‘View‘ function getMessage()

在学习solidity过程中碰到一个小细节的问题,这个问题不是很难,但是网上找了许多资料也未能找到相关的解决办法,今天偶然看了一篇文章解决了这个问题。

错误如下:

编写的代码如下:

//指定编译器版本,版本标识符
pragma solidity ^0.4.0;


//关键字 contract 跟java的class一样  智能合约是Inbox      
contract Inbox{
    //string 是数据类型,message是成员变量,在整个智能合约生命周期都可以访问
    //public 是访问修饰符,是storage类型的变量,成员变量和是全局变量
    string public message = "zsan ";



    //view是修饰符,表示该函数仅读取成员变量,不做修改
    function getMessage() public view returns(string) {
        return message;
    }
}

因为我想在运行合约的时候点击函数名称就可以显示结果,所以使用了view关键字来显示,但是每次运行都是出现这个错误,网上看别人都能完美运行但是自己却总是运行不成功。

【分析原因】

网上大多数教程是2017/2018的,现在是2020年经过2年的发展Remix-Ethereum IDE 版本更新了很多,所以经过我自己的测试0.4.0到0.4.15的版本不兼容了,所以我们只需要更换下版本号为 0.4.16(>=0.4.16就可以)

所以我们修改下代码,将版本号改为0.4.16

//指定编译器版本,版本标识符
pragma solidity ^0.4.16;

再次运行,结果如下:

browser/payable.sol:14:34: Error: Expected token LBrace got ‘View‘ function getMessage()_第1张图片

点击Run运行合约:

browser/payable.sol:14:34: Error: Expected token LBrace got ‘View‘ function getMessage()_第2张图片

达到我们预期的结果了,所以纠结我很久的小问题终于解决了。

你可能感兴趣的:(以太坊)