这是一个新手。
val arr_one = Array(Array(1,2),Array(3,4),Array(5,6),Array(x,y)..等等)val arr_two = Array(Array(2,3),Array(4,5),Array(6,7))var tempArr = ArrayBuffer [Double]()我想要 …
我相信这可以满足您的需求,没有任何可变状态和“迭代” - 它使用“ 换理解 “语法是一种非命令性的循环 - 换句话说,而不是 改变国家 在每次迭代中,它 返回一个值 这是每次“迭代”的结果序列:
val result: Array[Array[Int]] = for (arr1 <- arr_one) yield { for (arr2 <- arr_two) yield multArrays(arr1, arr2) }
假如说 multArrays 有以下签名:
multArrays
def multArrays(arr1: Array[Int], arr2: Array[Int]): Int
这计算每个单元格的值。一个天真的实现(假设数组大小为2)将是:
def multArrays(arr1: Array[Int], arr2: Array[Int]): Int = { arr1(0) * arr2(0) + arr1(1) * arr2(1) }
但是当然这可以推广到任何大小的数组。
可能这就是你需要的:
val tmp = arr_one map ((arr1) => {arr_two map (arr2 => (arr1 zip arr2) map {case(a, b) => a * b} reduce (_ + _))} )
得到 ArrayBuffer 只需使用:
ArrayBuffer
tmpArr = tmp.toBuffer