与通过 Multik 库在 Kotlin 中使用多维数组相关的几个问题。
第一个问题:为什么需要在这里导入
mk
和zeros
才能访问mk.zeros
?我认为导入mk
就足够了。我想这是一个通用的 Kotlin 问题,而不是 Multik 特有的问题。顺便说一下,在这个例子中,我在 Linux 上的 kotlin
命令行界面中工作,并使用包含 Multik 内容的合适类路径。
>>> import org.jetbrains.kotlinx.multik.api.mk
>>> mk.zeros <Double> (4, 3)
error: unresolved reference: zeros
mk.zeros <Double> (4, 3)
^
>>> import org.jetbrains.kotlinx.multik.api.zeros
>>> mk.zeros <Double> (4, 3)
res3: org.jetbrains.kotlinx.multik.ndarray.data.NDArray<kotlin.Double, org.jetbrains.kotlinx.multik.ndarray.data.D2> = [[0.0, 0.0, 0.0],
[0.0, 0.0, 0.0],
[0.0, 0.0, 0.0],
[0.0, 0.0, 0.0]]
第二个问题,这次是针对 Multik 的。成功创建
res3
后,我该如何索引它的元素?
>>> res3[0, 0]
error: unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public operator fun MatchGroupCollection.get(name: String): MatchGroup? defined in kotlin.text
res3[0, 0]
^
error: no get method providing array access
res3[0, 0]
^
看起来没有定义方括号操作;我无法找到另一个用于索引的函数。我很困惑,因为 Multik Github 自述文件 (https://github.com/Kotlin/multik) 中显示的示例似乎显示使用方括号进行索引。
zeros
是 Multik
上的 扩展函数(类型别名
mk
),因此您需要显式导入
res3[0, 0]
是不正确的语法。应该是res3[0][0]