2016-05-06 46 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

我個人建議你在斯卡拉書編程由馬丁·奧德斯基等。現在它已經有點老了,但它完全是書面的,並且完全涵蓋了語言。

相關問題