編寫一個測試用的智能合約,java
pragma solidity ^0.4.8;app
contract strutsTest {
struct Funder{
address addr;
uint amount;
}
mapping(uint=>Funder)public funders;
uint public numFunder;測試
event log(address _addr,uint _u);ui
function newFunder(address _addr,uint _amount)payable public returns(uint _funderID){
++numFunder;
funders[numFunder]=Funder(_addr,_amount);
log(_addr,_amount);
return numFunder;
}this
function setFunder(uint u)payable public {
Funder f = funders[u];
f.amount +=msg.value;
log(f.addr,f.amount);
}
/* Constructor */
function strutsTest() public {對象
}
}ci
但出現如下錯誤:編譯器
Variable is declared as a storage pointer. Use an explicit "storage" keyword to silence this warning.
看這個錯誤像是個警告,但在mist中,硬是不給經過,覺得是程序哪裏寫錯了。查了N遍資料後,發現網上寫法都是同樣。感受應該是mist新版本增強了變量的限制。開始查storage的緣由,it
storage是將變量變成引用類型,從funders獲取Funder結構對象,像java同樣應該是引用類型,故我將Funder f = funders[u];這段代碼加上storage修飾,即Funder storage f = funders[u];編譯器顯示成功經過了。io