8

関数を次のように定義できます。

def print(n:Int, s:String = "blah") {}
print: (n: Int,s: String)Unit

私はそれを呼び出すことができます:

print(5) 
print(5, "testing")

上記をカリー化すると:

def print2(n:Int)(s:String = "blah") {} 
print2: (n: Int)(s: String)Unit

1つのパラメーターで呼び出すことはできません:

print2(5)
<console>:7: error: missing arguments for method print2 in object $iw;
follow this method with `_' if you want to treat it as a partially applied function
       print2(5)

両方のパラメーターを指定する必要があります。これを回避する方法はありますか?

4

1 に答える 1

17

()デフォルトの引数では省略できません。

scala> def print2(n:Int)(s:String = "blah") {}
print2: (n: Int)(s: String)Unit

scala> print2(5)()

暗黙的に機能しますが:

scala> case class SecondParam(s: String)
defined class SecondParam

scala> def print2(n:Int)(implicit s: SecondParam = SecondParam("blah")) {}
print2: (n: Int)(implicit s: SecondParam)Unit

scala> print2(5)
于 2011-02-22T06:05:54.333 に答える