currying:如何将第一个输入作为可选项?

时间:2015-07-07 14:35:07

标签: scala

我正在学习Scalacurrying的概念。这就是我正在做的事情

scala> def div(a:Int)(b:Int) = a/b
div: (a: Int)(b: Int)Int

scala> div(10)(2)
res9: Int = 5

scala> val d = div(10)_
d: Int => Int = <function1>

scala> d(5)
res10: Int = 2

scala> val e = div _ (2)
<console>:1: error: ';' expected but '(' found.
       val e = div _ (2)
                     ^

scala> 

问题
- 如何将a设为可选,而不是b

1 个答案:

答案 0 :(得分:5)

你可以修复b并获得一个函数Int => Int,但你需要保留括号,不幸的是注释了这个类型:

scala> div(_: Int)(2)
res7: Int => Int = <function1>

scala> res7(10)
res8: Int = 5

scala> res7(2)
res9: Int = 1

a不是“可选的”,它只是结果函数中的一个参数。