当前位置: 首页 > 知识库问答 >
问题:

二维通用数组提供程序

汤玉宸
2023-03-14

我正在尝试在Kotlin中实现通用二维数组提供程序:

public fun <T> array2dim(sizeOuter: Int, sizeInner: Int): Array<Array<T>>
            = Array(sizeOuter) { Array(sizeInner) }

但却不知道如何克服这个问题。

编译器说:类型接口失败:没有足够的信息来推断构造函数Array中的参数T(size: Int, init:(Int)→T)请显式指定。

共有1个答案

楚昊明
2023-03-14

首先,您的内部Array构造函数调用缺少它的第二个init参数,即您在其中创建Array将包含的初始元素的lambda。比如说,如果您想用同一个元素填充它,您可以将其作为参数传递:

fun <T> array2dim(sizeOuter: Int, sizeInner: Int, element: T): Array<Array<T>>
            = Array(sizeOuter) { Array(sizeInner) { element } }

您还可以使用外部索引和内部索引,并基于这些索引创建初始元素:

fun <T> array2dim(sizeOuter: Int, 
                  sizeInner: Int, 
                  createElement: (Int, Int) -> T): Array<Array<T>>
        = Array(sizeOuter) { outerIndex ->
              Array(sizeInner) { innerIndex ->
                  createElement(outerIndex, innerIndex)
              } 
          }

如果在创建数组时没有任何要初始化的内容,请考虑使用数组的空值创建可空的内部数组。

这些仍然会给您一个无法访问T的错误-有关解释,请参阅此相关问题的答案,但您需要将您的T标记为具体化(因此,您的函数为内联):

inline fun <reified T> array2dim(sizeOuter: Int, sizeInner: Int, element: T)
            : Array<Array<T>>
            = Array(sizeOuter) { Array(sizeInner) { element } }
 类似资料:
  • 如果您正在使用TestNG,您会发现要使用一个方法作为数据提供程序,您必须创建一个返回二维对象数组的方法。 所以如果我有一个(比如说)学生的列表,有没有什么实用方法可以把它转换成二维数组。

  • 我正在编写一个计算和绘制抛物线的小程序。但我在程序中有一小部分需要计算valuetable。 二次函数如下:

  • 二维数组 #include <stdio.h> #include <stdlib.h> //01.二维数组: // 1.二维数组的内存存储原理: // 所有数组,无论一维数组,二维数组,多维数组,在内存当中的 // 存储实质都是采取的连续存储方式 // 2.二维数组的规律赋值方式: // 先进行行遍历,在进行列遍历,再逐个进行逐个数组元素的具体赋值操作 //

  • 问题内容: 我在构造函数中提供了带有对象的泛型类型。我想在此构造函数中创建二维数组,但是这可能吗? 问题答案: 与如何在Java中创建通用数组相同?但扩展到2D: 阅读上面JAB的注释后的注意:要扩展到更多维度,只需将[]和维度参数添加到newInstance()(cls是一个类,d1到d5是整数): 有关详细信息,请参见。

  • 问题内容: 我有一个php表单,该表单具有已知的列数(例如,顶部直径,底部直径,织物,颜色,数量),但是行数未知,因为用户可以根据需要添加行。 我发现了如何采用每个字段(列)并将其放入各自的数组中。 因此,我最终在HTML中得到的是: 我现在想做的是将所有行和列都放入多维数组,然后将其内容通过电子邮件发送给客户端(最好在格式良好的表中)。我还无法真正理解如何将所有这些输入和选择组合到一个不错的数组

  • 主要内容:创建二维数组,初始化二维数组,获取单个元素,获取全部元素,获取整行元素,获取整列元素为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是