黒猿の家:Scala汎用関数

967 ワード

1、概要
関数またはメソッドには、タイプ(汎用)パラメータもあります.以下に簡単な例を示します.
def getMiddle[T](a:Array[T]) = a(a.length/2)

汎用クラスと同様に、タイプパラメータをメソッド名の後に置く必要があります.Scalaは、このメソッドを呼び出すタイミングパラメータからタイプを推定します.
//    getMiddle[String]
getMiddle(Array(“Mary” , ”had” , ”a” , ”little” , ”lamb”))

必要に応じて、タイプを指定することもできます.
//       ,   f  
val f = getMiddle[String] _
println(f(Array("Bob", "had", "a", "little", "brother")))

2、体操
object MainPair2{
  def main(args: Array[String]): Unit = {

    def getMiddle[T](x:T): Unit ={

    }
    //           
    println(getMiddle(Array("Bob", "had", "a", "little", "brother")).getClass.getTypeName)

    //    ,         。
    val f = getMiddle[Array[String]] _
    println(f(Array("Bob", "had", "a", "little", "brother")))

  }
}