2017-02-27 94 views
-2

如何編寫函數以Array [Array [T]]或List [List [T]]或List [Array [T]]或SeqLike [SeqLike [T]]作爲參數?寫一個通用函數可以在Scala中使用Array [Array [T]]或List [List [T]]或List [Array [T]]或SeqLike [SeqLike [T]]作爲參數

等一些功能:

def transposeMatrix[T, S <% Seq[T], SS <% Seq[S]](xss: SS): Seq[Seq[T]] = for (i <- xss.head.indices) yield for (xs <- xss) yield xs(i) val v = transposeMatrix(matrix)

矩陣是列表[數組[字符串]],但基質可anyof數組[數組[T]]或列表[列表[T]]或列表[陣列[T]]或SeqLike [SeqLike [T]]

或以另一種方式,非常類似於如0​​方法GenericTraversableTemplate性狀Scala庫

BTW的:我現在出現錯誤「錯誤:(48, 26)類型不匹配; 運行

+0

您需要更多信息。 1.問題描述的內容要比你在這裏展示的內容要多,因爲這不是什麼大問題,2.你需要先展示你所做的事情,這不是一個會爲你寫代碼的網站當你還沒有嘗試任何東西。 – Carcigenicate

回答

0

中發現

: <:<[Nothing,Nothing] 
required: Array[String] => Seq[?] 
    val v = transposeMatrix(matrix 

)」您可以使用較高的種我想,和玩下界得到你想要的語義。您還可以通過將-language:higherKinds明確地傳遞給scalacOptions來啓用。

import scala.language.higherKinds 

def test[ 
    M[X] <: TraversableOnce[X], 
    Inner[Y] <: TraversableOnce[Y], 
    T 
](col: M[Inner[T]): Bla