在学习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;
再次运行,结果如下:
点击Run运行合约:
达到我们预期的结果了,所以纠结我很久的小问题终于解决了。