Solidity
固體函式氣體要求是無限的
struct userData{ uint val; bool isvalue; string name; } mapping(uint => address) internal users; mapping(address => userData) internal bidirectionalUsers; function addMember(address newMember, string memberName) public{ if (msg.sender != owner) return; if (bidirectionalUsers[newMember].isvalue) return; users[memberCount] = newMember; bidirectionalUsers[newMember] = userData(memberCount,true,memberName); }
上面的程式碼在 addMember(), 中拋出警告
gas limit is high:infinite and it can not be executed
。我評論了函式內的所有行,但它仍然拋出這個警告。我在這裡做錯了什麼?有人可以幫助我嗎?謝謝你。
您可以放心地忽略此警告。問題是參數中的字元串變數
string memberName
。因為字元串沒有固定的大小,理論上可能需要無限量的氣體來填充無限量的字元。如果沒有顯示其他錯誤,您的程式碼仍將編譯並工作。
即使使用使用固定長度參數的純函式,我也會收到相同的警告。這是程式碼:
function sumar(int a, int b) public pure returns (int) { return a+b; }
有任何想法嗎?
(使用目前版本的 Remix,編譯器版本 0.8.13)