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

错误如下:

browser/payable.sol:14:34: Error: Expected token LBrace got ‘View‘  function getMessage()_成员变量

编写的代码如下:

//指定编译器版本,版本标识符
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;
}
}

browser/payable.sol:14:34: Error: Expected token LBrace got ‘View‘  function getMessage()_智能合约_02

因为我想在运行合约的时候点击函数名称就可以显示结果,所以使用了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()_成员变量_03

点击Run运行合约:

browser/payable.sol:14:34: Error: Expected token LBrace got ‘View‘  function getMessage()_成员变量_04

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