Arrays
返回結構數組
這是我的程式碼範例:
pragma solidity ^0.5.16; pragma experimental ABIEncoderV2; contract Operations { Operation[] public operations; struct Operation { uint startOperation; uint endOperation; string responsible; string opType; } function getAllOperations() public view returns(Operation[] memory){ return operations; } }
我有3個問題:
1 - 為什麼我需要編譯指示實驗 ABI 來返回結構數組?
2 - 為什麼我會收到警告說我不應該在實時部署中使用實驗性功能?
3 - 有沒有其他方法可以在不使用實驗功能的情況下做到這一點?
1 -檢查此以獲取更多詳細資訊
2 - 如果您將 pragma solidity 0.5.X 切換到 0.6.2(最後一個),您將看到您能夠部署相同的合約,而不會出現“您不應該在實時網路中部署實驗性功能”的警告。
3-暫時不行,如果你使用 0.6.X 以下的 solc,這是通過鍵/索引檢索值的唯一方法
希望這可以幫助
是的 - 使用 Solidity 0.6.x,其中 ABIEncoderV2 不再被認為是實驗性的;)。他們已經為此工作了一段時間,並且在此期間可以在早期版本中進行測試。
話雖如此,您仍然需要使用編譯指示在 0.6 中啟用它,但希望現在一切正常!