Arrays

整數數組的內聯初始化

  • May 8, 2016

這兩行編譯:

uint8[5] foo = [0,0,0,0,0];
int[5] foo = [1,0,0,0,0];

我的問題是,為什麼以下兩行無法編譯,我該如何修復它們?

int[5] foo = [1,-1,0,0,0];

錯誤:無法推斷數組元素的通用類型

int8[5] foo = [0,0,0,0,0];

錯誤:輸入 uint8

$$ 5 $$記憶體不能隱式轉換為預期類型 int8$$ 5 $$儲存參考

我假設內聯數字僅適用於 uint?

Solidity 版本 0.3.2-9e36bdda

以下程式碼正確編譯:

uint8[5] foo1 = [0, 0, 0, 0, 0];
int[5]   foo2 = [1, 0, 0, 0, 0];
int[5]   foo3 = [int(1), int(-1), int(0), int(0), int(0)];
int8[5]  foo4 = [int8(0), int8(0), int8(0), int8(0), int8(0)];

問:為什麼以下兩行無法編譯,我該如何解決?

A:因為編譯器無法推斷出數組元素的正確類型來匹配數組類型。請參閱上面的程式碼來解決問題。參考Solidity 文件 - 類型 - 顯式轉換

問:我假設內聯數字僅適用於 uint?

答:請參閱Solidity 文件 - 類型 - 類型推導

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