問題回顧:在編寫完智能合約之後,通過命令行的形式編譯智能合約時出現的問題。
1. 具體合約代碼(錯誤寫法):
pragma solidity >=0.4.21 <0.7.0;
contract Simple {
string name;
uint age;
//定義事件
event Instructor(string name,uint age);
function set(string _name, uint _age) public {
name=_name;
age=_age;
//觸發事件
emit Instructor(name,age);
}
function get() public view returns(string,uint) {
return (name,age);
}
}
2. 具體問題描述(編譯有問題的代碼已經通過----的形式標註出來了):
3. 問題出現的原因:
這是由於solidity 0.5.0版本的更新導致的,只需要在用到string的時候,在其後面加上memory就可以了。
4. 經過修改後的正確寫法如下:
pragma solidity >=0.4.21 <0.7.0;
contract Simple {
string name;
uint age;
//定義事件
event Instructor(string name,uint age);
function set(string memory _name, uint _age) public {
name=_name;
age=_age;
//觸發事件
emit Instructor(name,age);
}
function get() public view returns(string memory,uint) {
return (name,age);
}
}
注意:string _name修改爲string memory _name
5. 重新編譯一下,就顯示已經編譯成功啦~~