2017-02-27 45 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