Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 带有第一个和第二个参数的部分应用函数2_Scala_Currying - Fatal编程技术网

Scala 带有第一个和第二个参数的部分应用函数2

Scala 带有第一个和第二个参数的部分应用函数2,scala,currying,Scala,Currying,给出一种方法 def f(a: String, b: String) = ??? 我想得到两个部分应用的函数(第一个参数和第二个参数) 我编写了以下代码: def fst = f _ curried "a" def snd = (s: String) => (f _ curried)(s)("b") 有更好的办法吗 [更新]snd可以写得更短def snd=(f u curried)(((u:String))((“b”)这更简单: def fst = f("a", (_: String

给出一种方法

def f(a: String, b: String) = ???
我想得到两个部分应用的函数(第一个参数和第二个参数)

我编写了以下代码:

def fst = f _ curried "a"
def snd = (s: String) => (f _ curried)(s)("b")
有更好的办法吗

[更新]snd可以写得更短
def snd=(f u curried)(((u: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")
提供的第一个arg:

def fst = f _
def fst = f("a")
def fst = f(_: String)("b")
def snd = f("a")("b")
仅提供第二个参数:

def fst = f _
def fst = f("a")
def fst = f(_: String)("b")
def snd = f("a")("b")
提供的所有参数:

def fst = f _
def fst = f("a")
def fst = f(_: String)("b")
def snd = f("a")("b")

如果以定义参数的相同顺序对参数进行咖喱,则此语法比问题中使用的语法更简洁。

错误:扩展函数缺少参数类型((x$1)=>f(“a”,x$1))
@Yaroslav谢谢,修复了。