2017-04-05 51 views
0

請找代碼 對象MatrixMul擴展應用到乘3乘3矩陣{如何使用Scala的

val threedim = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9)) 
val threedimanother = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9)) 
val elements = for { 
row <- threedim 
ele <- row 
} yield ele 
for (i <- elements) { 
println("the 3 dim array are " + i) 
} 
val elements1 = for { 
row <- threedimanother 
ele <- row 
} yield ele 
for (j <- elements1) 
print("another 3 dim array " + j) 
def mult[A](a: [threedim] , b:[threedimanother])(implicit n :Numeric[A])={ 
for(row <- a) 
    yield for(col <- b.transpose) 
    yield row zip col map Function.tupled(_*_) reduceLeft(_+_) 
} 
} 

這個代碼需要MUL的threedim *的mult的threedimanother

+0

但我gettting錯誤你能請指導我如何解決這個 – AKDGP

+0

也發佈錯誤,順便說一句。這段代碼充滿了錯誤。首先是'def mult [A](a:[threedim],...)'無效。 'threedim'是一種價值而不是一種類型。我也不知道方括號應該表明什麼。它必須是'def mult [A](a:Array [Array [A]],b:Array [Array [A]])...'。你也可以使用'IndexedSeq'而不是箭頭,因爲創建新的'Arrays [A]'需要'ClassTag [A]'。 – ziggystar

回答

1

您可以使用您的實現功能如果您更改簽名如下:

def mult(a: Array[Array[Int]], b: Array[Array[Int]]) : Array[Array[Int]] = { 
    for(row <- a) 
    yield for(col <- b.transpose) 
     yield row zip col map Function.tupled(_*_) reduceLeft(_+_) 
} 
+0

嗨阿米爾你爲什麼脫掉它工作正常的解決方案 – AKDGP

+0

HI哈拉爾謝謝你的解決方案 – AKDGP

+0

是的,我接受它 – AKDGP