二维数组存数值5000就报错

image.png

如上图

代码

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

/**
 * @title Storage
 * @dev Store & retrieve value in a variable
 */
contract Storage {

    uint[5][7] levelParams = [
        [200*1e18, 0, 18, 0, 40],
        [400*1e18, 10, 20, 0, 40],
        [800*1e18, 12, 22, 0, 40],
        [1000*1e18, 14, 24, 0, 40],
        [2000*1e18, 18, 28, 6, 50],
        [3000*1e18, 20, 30, 8, 60],
        [5000*1e18, 20, 30, 10, 70]
    ];

}

把 [5000*1e18, 20, 30, 10, 70] 中的5000改成4000又是正常

请先 登录 后评论

最佳答案 2021-08-26 17:56

我还真没有遇到过这个问题。

根据报错“Unable to deduce common type for array elements”, 找到了这个: https://gitter.im/ethereum/solidity/archives/2018/03/18

发现下面的方式可以解决:

uint256[5][7] levelParams = [
    [uint(200*1e18), 0, 18, 0, 40],
    [uint(400*1e18), 10, 20, 0, 40],
    [uint(800*1e18), 12, 22, 0, 40],
    [uint(1000*1e18), 14, 24, 0, 40],
    [uint(2000*1e18), 18, 28, 6, 50],
    [uint(3000*1e18), 20, 30, 8, 60],
    [uint(5000*1e18), 20, 30, 10, 70]
];
请先 登录 后评论

其它 0 个回答