有没有优雅的表达方式
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/