2017-11-21 4 views
1

具体的な型の値を指定せずにベクトルとリストの両方を受け入れることはできますか?それはまたDoubleInt値を受け入れるようスカラ汎用メソッド。数値的な値のシーケンスを受け入れる

def testFunc[V <: Seq[Int]](x: V) = x 

testFunc(List(1, 3)) // res0: List[Int] = List(1, 3) 
testFunc(Vector(1, 3)) // res1: scala.collection.immutable.Vector[Int] = Vector(1, 3) 

どのように私はこの機能を変更することができます。

は、私は今、このような何かを持っていますか?

答えて

1

我々はどの単項型コンストラクタのための方法を少し一般化型反復(あなたがしたい場合は、F[_] <: Seq[_]のために制約を追加することができます)を回避することができます

def testFunc[F[_], A : Numeric](x: F[A]): F[A] = x 

をそして、私たちのために推論作品を入力します:

val resFirst = testFunc(Seq(1.0,2.0,3.0)) 
val resSecond = testFunc(List(1,2)) 
+0

ああ私は関数を呼び出すときに型を指定する必要があります。ありがとう、私はドキュメントで見つけることができませんでした。 – ritchie46

+0

@ ritchie46うん、型推論.. –

+1

@ ritchie46私の更新を見て、それはメソッド呼び出しをよりきれいにします。 –

関連する問題