在學習solidity過程中碰到一個小細節的問題,這個問題不是很難,但是網上找了許多資料也未能找到相關的解決辦法,今天偶然看了一篇文章解決了這個問題。
錯誤如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQDOxEzX3xCZlhXam9VbsUmepNXZy9CXwJWZ3xCdh1mcvZ2Lc1zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwIzX39GZhh2csATMflHLwEzX4xSZz91ZsAzMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0MTN1MDZwEjZ1cDMkRDZyYzX1AjNxETM4EzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
編寫的代碼如下:
//指定編譯器版本,版本辨別符
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;
再次運作,結果如下: