2016-05-06 43 views
0

有没有一种方法可以在scala中创建函数,我可以输入各种类型的参数输入?请参阅下面的示例代码。我想让下面的代码变成一个可以接受输入的各种数据类型的函数。具有各种输入数据类型的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_ 
} 

回答

3

是的。而且你也不需要可变变量和丑陋的命令循环:) 如果你使用的是scala语法,不妨花点时间学习一下实际使用的语言:/

def toMatrix[T : ClassTag](a: Array[T], m:Int, n:Int) = a.grouped(n).toArray 
1

很显然,你是在谈论类型参数化,或者在Java世界仿制药。你应该去阅读它 - 互联网上有很多信息和关于这个主题的书籍。从alvinalexander.com一些例子:

http://alvinalexander.com/scala/scala-classes-using-generic-types-examples

我个人建议你在斯卡拉书编程由马丁·奥德斯基等。现在它已经有点老了,但它完全是书面的,并且完全涵盖了语言。

相关问题