有没有办法在scala中创建一个函数,我可以输入各种类型的参数输入?请参阅下面的示例代码。我想将下面的代码变成一个函数,它可以接受输入的各种数据类型。
示例:
/** */
def toMatrix(A: Array[Double], m:Int, n:Int): Array[Array[Double]] = {
var A_ = Array.apply(A.slice(0,n),A.slice(n*1,n*1+n))
for (i <- 2 to (m-1)){
A_ = A_ ++ Array(A.slice(n*i,(n*i)+n))
}
A_
}
/** */
def toMatrixInt(A: Array[Int], m:Int, n:Int): Array[Array[Int]] = {
var A_ = Array.apply(A.slice(0,n),A.slice(n*1,n*1+n))
for (i <- 2 to (m-1)){
A_ = A_ ++ Array(A.slice(n*i,(n*i)+n))
}
A_
}
/** */
def toMatrixBoolean(A: Array[Boolean], m:Int, n:Int) = {
var A_ = Array.apply(A.slice(0,n),A.slice(n*1,(n*1)+n))
for (i <- 2 to (m-1)){
A_ = A_ ++ Array(A.slice(n*i,(n*i)+n))
}
A_
}
答案 0 :(得分:3)
是。而你也不需要可变变量和丑陋的命令循环:) 如果您使用scala语法,可能需要花一两个时间来学习使用该语言:/
def toMatrix[T : ClassTag](a: Array[T], m:Int, n:Int) = a.grouped(n).toArray
答案 1 :(得分:1)
显然,你在谈论Java世界中的类型参数化或泛型。你应该去阅读它 - 互联网和书籍上有很多关于这个主题的信息。 alvinalexander.com的一些例子:
http://alvinalexander.com/scala/scala-classes-using-generic-types-examples
我个人推荐Martin Odersky等人的“Scala编程”一书。它现在略显陈旧,但它写得很完美,并且完全覆盖了语言。