关于Kotlin Multik库导入规则与多维数组索引的技术问题
关于Multik库使用的两个问题解答
1. 为何必须同时导入mk和zeros才能调用mk.zeros<Double>(4, 3)?
Multik的API设计里,mk是核心的API入口实例,但zeros并不是mk本身的成员方法,而是扩展函数。这些创建数组的扩展函数(比如zeros、ones、full等)都定义在org.jetbrains.kotlinx.multik.api包下。Kotlin中,扩展函数必须显式导入后才能被编译器识别,仅导入mk的话,编译器不知道它有zeros这个扩展方法,所以会提示未解析引用。
简单说:mk是功能主体,zeros是给mk额外添加的创建数组的功能,得把这个功能也导入进来才能用。
2. 如何正确索引Multik数组的元素?
Multik的多维数组不支持直接用res3[0,0]这种双参数索引写法(Kotlin的[]运算符默认只支持单个参数)。你有两种正确的索引方式:
- 调用
get方法并传入多个索引参数:res3.get(0, 0) - 对于二维数组,也可以用链式索引:
res3[0][0](先取第0行的一维数组,再取该数组的第0个元素)
如果是更高维度的数组,比如三维,同样可以用res3.get(0, 1, 2)或者链式索引res3[0][1][2]。
内容的提问来源于stack exchange,提问作者Robert Dodier
相关产品推荐
相关产品推荐

