2016-11-13 110 views
2

這是一個簡單的函數,給定索引,查找從最後一個數組中的項目如何使此方法在斯卡拉通用

例如,給出val arr = Array(1,2,3)val i = 0;它將返回3

def findIndexFromLast(arr: Array[Relationship], i: Int): Relationship = { 
    val cur = i 
    val size = arr.length 

    arr(size - i - 1) 
    } 

我想讓它通用的,能夠接受任何類型

回答

2

如果你做第一個參數一個Seq(),它需要許多不同類型的集合的陣作爲輸入。

def fromEnd[T](coll: Seq[T], index: Int):T = coll.reverse(index) 

fromEnd(Array(1,3,5,7,9), 0)     // res0: Int = 9 
fromEnd(List('x','y','q','b'), 3)   // res1: Char = x 
fromEnd(Vector(2.2, 5.4, 7.7), 2)   // res2: Double = 2.2 
fromEnd(Stream(true, true, false, true), 1) // res3: Boolean = false 
2
def findIndexFromLast[A](arr: Array[A], i: Int): A = { 
    val cur = i 
    val size = arr.length 

    arr(size - i - 1) 
}