首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何初始化uint16[]数组?

如何初始化uint16[]数组?
EN

Ethereum用户
提问于 2018-04-25 22:09:43
回答 1查看 1.3K关注 0票数 2

我很难以一种优雅的方式创建uint16[]数组。

我试试看:

代码语言:javascript
复制
function init() public {
uint16[] memory x = [uint16(1), uint16(1)];
test(x)
}

这会引发TypeError: Type uint16[2] memory is not implicitly convertible to expected type uint16[]

我想在

代码语言:javascript
复制
function test(uint16[] input){}

函数

当然,我可以创建一个uint16[]数组及其中的push值,但这并不是初始化它的一种优雅方法。如何正确初始化这些值?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-04-25 23:25:10

对于当前版本的Solidity (v.0.4.21),不能将固定大小的内存数组分配给动态大小的内存数组。

查看Array Literals / Inline Arrays坚实性文件中的文档。

下列代码不起作用:

代码语言:javascript
复制
// This will not compile.

pragma solidity ^0.4.0;

contract C {
    function f() public {
        // The next line creates a type error because uint[3] memory
        // cannot be converted to uint[] memory.
        uint[] x = [uint(1), 3, 4];
    }
}

文件上说:

计划在将来取消这一限制,但由于数组是如何在ABI中传递的,因此目前会造成一些复杂情况。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/46715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档