为uint256值数组硬编码初始值失败



我试图创建一个包含10个整数的数组(uint256)并硬编码它们的初始起始值-但我一直得到以下错误(奇怪地谈论uint16,即使我特别要求uint256):

TypeError: Type uint16[10] memory is not implicitly convertible to expected type uint256[] memory.

下面是我的代码:

uint256 memory myNumbersArray = new uint256[](10);
myNumbersArray = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]; 

我也试过这样做:

uint256[10] memory myNumbersArray;
myNumbersArray = [0, 100, 200, 300, 400, 500, 600, 700, 800, 900]; 

同样的结果。

(我想我也试过在一行中完成所有的事情。)

我得到这个错误,因为我分配的实际值是如此之小,他们不需要类型的uint256?
我需要知道这一点,因为未来

这个数组应该保存的值绝对足够大,可以作为uint256类型。

如何解决这个问题?我分配的起始值不是填充/虚拟值-它们正是我需要的。所以我不可能无缘无故地插入一堆疯狂的大数字,只是为了通过编译之类的。

你可以将第一个值转换为uint256类型,整个数组将是该类型。

uint256[10] memory myNumbersArray;
myNumbersArray = [uint256(0), 100, 200, 300, 400, 500, 600, 700, 800, 900]; 

最新更新