2016-04-04 10 views
3

このコンテキストでは、typeパラメータにデフォルト値を指定する方法はありますか?scala:型パラメータを持つ関数のデフォルト値。部分的に適用されるコンテキストで使用される

def increase[T: Numeric](x: T, y: T): T = implicitly[Numeric[T]].plus(x, y) 

val inc = increase _ 

出力:

C:\Sources\scala\main.scala:12: error: could not find implicit for evidence parameter of type Numeric[Nothing] val inc = increase _

+1

はhttp://www.cakesolutions.net/teamblogs/default-type-parameters-with-implicits-in-scalaを参照してください。 。 –

答えて

2

increaseジェネリック型パラメータを持っています。メソッドを関数に解決しようとすると、メソッドを解決する必要があるタイプTを暗黙的に検索しようとしています。 にはタイプが指定されていないため、Numeric[Nothing]を検索しようとしており、範囲内にそのような暗黙的な利用可能なものがないことがわかります。あなたが必要なもの

は、明示的に各解像度のためのタイプTを指定することです:

scala> val intInc = increase[Int] _ 
inc: (Int, Int) => Int = <function2> 

scala> val doubleInc = increase[Double] _ 
doubleInc: (Double, Double) => Double = <function2> 
+0

文字通り、この場合、デフォルトのタイプを指定する必要がありますか?ああ..私は、明らかな答えのように見えます。見た目のタイトルを修正する必要があるように見える..ありがとう – Pavel

関連する問題