Arrays
整數數組的內聯初始化
這兩行編譯:
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 文件 - 類型 - 類型推導。