arrays - Array.isDefinedAt 用于 scala 中的 n 维数组

标签 arrays scala

有没有优雅的表达方式

val a = Array.fill(2,10) {1}
def do_to_elt(i:Int,j:Int) {
    if (a.isDefinedAt(i) && a(i).isDefinedAt(j)) f(a(i)(j))
}

在 Scala 中?

最佳答案

出于三个主要原因,我建议您不要将数组的数组用于二维数组。首先,它允许不一致:并非所有列(或行,随意选择)都需要具有相同的大小。其次,它效率低下——你必须遵循两个指针而不是一个。第三,很少有库函数可以在二维数组形式的数组数组上透明且有效地工作。

鉴于这些情况,您应该使用支持 2D 数组的库,例如 scalala ,或者你应该自己写。如果您执行后者,除其他外,这个问题就会神奇地消失。

所以就优雅而言:不,没有办法。但除此之外,你开始的道路还包含很多不优雅的地方;你可能最好尽快离开它。

关于arrays - Array.isDefinedAt 用于 scala 中的 n 维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6090684/

相关文章:

c - 为什么 C 函数不能返回数组类型?

python - 列出数据湖中文件夹中的所有文件

scala - 为什么这个免费 Monad 解释器不能将 String 解析为 Id[A]

scala - 如何运行 Akka

复杂数组的PHP输入过滤

php - 我可以通过使它等于另一个数组来分配一个数组吗?

python - 根据阈值拆分 numpy 数组的更快方法

c# - 为什么 Scala 和 C# lambda 有双箭头?

scala - 如何捕获任何 scalatra 操作中的所有错误?

javascript - 在 JavaScript 中创建时间点数组