コードをコンパイルしようとしましたが、次のエラーが発生しました。
TypeError:関数のパラメーターのデータの場所は「メモリ」でなければなりませんが、指定されていません
私のコード:
pragma solidity ^0.5.0;
contract memeRegistry {
string url;
string name;
uint timestamp;
function setmeme(string _url,string _name, uint _timestamp) public{
url = _url;
name = _name;
timestamp = _timestamp;
}
}
構造体、配列、またはマッピングタイプのすべての変数の明示的なデータの場所が必須になりました。これは、関数パラメーターと戻り変数にも適用されます。
memory
の後にstring
を追加します
function setmeme(string memory _url, string memory _name, uint _timestamp) public{
solidity 0.5.0については、こちらを確認してください。変更 https://solidity.readthedocs.io/en/v0.5.0/050-breaking-changes.html
//The version I have used is 0.5.2
pragma solidity ^0.5.2;
contract Inbox{
string public message;
//**Constructor** must be defined using “constructor” keyword
//**In version 0.5.0 or above** it is **mandatory to use “memory” keyword** so as to
//**explicitly mention the data location**
//you are free to remove the keyword and try for yourself
constructor (string memory initialMessage) public{
message=initialMessage;
}
function setMessage(string memory newMessage)public{
message=newMessage;
}
function getMessage()public view returns(string memory){
return message;
}
}
異なるバージョンのsolidityコンパイラーを選択してください。 ^0.4.25
は私のために働きます。
ソリッド性コンパイラのバージョンは、ファイルとremixのコンパイルタブの両方で設定する必要があります(ドロップダウンメニューです)。