Arrays

返回結構數組

  • April 23, 2021

這是我的程式碼範例:

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 中啟用它,但希望現在一切正常!

引用自:https://ethereum.stackexchange.com/questions/79571