给定一个方法
def f(a: String, b: String) = ???
我想获取部分应用函数(有第一个参数和第二个参数的情况下)。
我编写了以下代码:
def fst = f _ curried "a"
def snd = (s: String) => (f _ curried)(s)("b")
有没有更好的方法?
[更新] snd 可以写地更短 def snd = (f _ curried)((_: String))("b")
def fst = f("a", (_: String))
def snd = f((_: String), "b")
但需要注意的是,它会在每次调用时重新计算部分应用的函数,因此在大多数情况下我更喜欢使用val
(或者可能是lazy val
),而不是def
。
def f(a: String)(b: String) = ???
未提供参数:
def fst = f _
提供的第一个参数:
def fst = f("a")
仅提供第二个参数:
def fst = f(_: String)("b")
所有参数都已提供:
def snd = f("a")("b")
error: missing parameter type for expanded function ((x$1) => f("a", x$1))
- Yaroslav