Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 部分应用的函数不';我不能在斯卡拉工作_Scala - Fatal编程技术网

Scala 部分应用的函数不';我不能在斯卡拉工作

Scala 部分应用的函数不';我不能在斯卡拉工作,scala,Scala,为什么我不能用第二个参数调用g2(1,Int:Int)(9) g2(1,Int)返回一个函数,然后我用参数调用该函数。同时,在上面的示例中,我可以调用f3(9),但是它与g2(1,u:Int)(9)IMHO相同 // OK def f1: (Int, Int) => Int = _ + _ val f2: (Int, Int) => Int = f1 val f3: (Int) => Int = f2(1, _: Int) println

为什么我不能用第二个参数调用
g2(1,Int:Int)(9)

g2(1,Int)
返回一个函数
,然后我用参数调用该函数。同时,在上面的示例中,我可以调用
f3(9)
,但是它与
g2(1,u:Int)(9)
IMHO相同

// OK

def f1: (Int, Int) => Int   =   _ + _
val f2: (Int, Int) => Int   =   f1
val f3: (Int) => Int        =   f2(1, _: Int)

println {
  f3(9)
}

// FAIL

def g1: (Int, Int) => Int   =   _ + _
val g2: (Int, Int) => Int   =   g1

println {
  g2(1, _: Int)(9) // Error: 'g2' does not take parameters 
}

这是匿名函数中下划线范围的问题。有关规则,请参见此处:


根据上面链接的规则1,
g2(1,x:Int)(9)
被解释为
(x:Int)=>g2(1,x)(9)
。因此,您需要添加括号,以便规则2开始工作:
(g2(1,:Int))(9)
这是匿名函数中下划线范围的问题。有关规则,请参见此处:


根据上面链接的规则1,
g2(1,x:Int)(9)
被解释为
(x:Int)=>g2(1,x)(9)
。因此,您需要添加括号,以便规则2开始工作:
(g2(1,:Int))(9)
这是匿名函数中下划线范围的问题。有关规则,请参见此处:


根据上面链接的规则1,
g2(1,x:Int)(9)
被解释为
(x:Int)=>g2(1,x)(9)
。因此,您需要添加括号,以便规则2开始工作:
(g2(1,:Int))(9)
这是匿名函数中下划线范围的问题。有关规则,请参见此处:


根据上面链接的规则1,
g2(1,x:Int)(9)
被解释为
(x:Int)=>g2(1,x)(9)
。因此,您需要添加括号,规则2才能开始工作:
(g2(1,:Int))(9)
当您添加注释时,
(g2(1,:Int))(9)
起作用

Scala有多个参数列表,因此
f(x)(y)
的解析与
(f(x))(y)
不同。由于
g
只接受一个参数列表,它不能接受第二个参数列表,因此需要显式分组

g2(1,Int:Int)(9)
表示:取函数
g2(x,y)(z)
,并应用参数
x=1,z=9


(g2(1,Int))(9)
表示:取函数
g2(x,y)
,并应用参数
x=1
。然后对结果函数应用
y=9

当您添加注释时,
(g2(1,:Int))(9)
起作用

Scala有多个参数列表,因此
f(x)(y)
的解析与
(f(x))(y)
不同。由于
g
只接受一个参数列表,它不能接受第二个参数列表,因此需要显式分组

g2(1,Int:Int)(9)
表示:取函数
g2(x,y)(z)
,并应用参数
x=1,z=9


(g2(1,Int))(9)
表示:取函数
g2(x,y)
,并应用参数
x=1
。然后对结果函数应用
y=9

当您添加注释时,
(g2(1,:Int))(9)
起作用

Scala有多个参数列表,因此
f(x)(y)
的解析与
(f(x))(y)
不同。由于
g
只接受一个参数列表,它不能接受第二个参数列表,因此需要显式分组

g2(1,Int:Int)(9)
表示:取函数
g2(x,y)(z)
,并应用参数
x=1,z=9


(g2(1,Int))(9)
表示:取函数
g2(x,y)
,并应用参数
x=1
。然后对结果函数应用
y=9

当您添加注释时,
(g2(1,:Int))(9)
起作用

Scala有多个参数列表,因此
f(x)(y)
的解析与
(f(x))(y)
不同。由于
g
只接受一个参数列表,它不能接受第二个参数列表,因此需要显式分组

g2(1,Int:Int)(9)
表示:取函数
g2(x,y)(z)
,并应用参数
x=1,z=9


(g2(1,Int))(9)
表示:取函数
g2(x,y)
,并应用参数
x=1
。然后对结果函数应用
y=9

要使其工作,我需要添加括号:
(g2(1,:Int))(9)
,这很奇怪。
(g2(1,:Int))(9)
工作吗?scala有多个参数列表,因此
f(x)(y)
的解析可能与
(f(x))(y)
不同。我不确定它与通配符(
f(x,)
)是如何相互作用的,我想是的,正如我用括号说的那样,它是有效的。@Finkleson我只是在完成我的评论之后才看到你的评论;)您还可以编写
g2(1,:Int)。应用(9)
。要使其工作,我需要添加括号:
(g2(1,:Int))(9)
,这很奇怪。
(g2(1,:Int))(9)
工作吗?scala有多个参数列表,因此
f(x)(y)
的解析可能与
(f(x))(y)
不同。我不确定它与通配符(
f(x,)
)是如何相互作用的,我想是的,正如我用括号说的那样,它是有效的。@Finkleson我只是在完成我的评论之后才看到你的评论;)您还可以编写
g2(1,:Int)。应用(9)
。要使其工作,我需要添加括号:
(g2(1,:Int))(9)
,这很奇怪。
(g2(1,:Int))(9)
工作吗?scala有多个参数列表,因此
f(x)(y)
的解析可能与
(f(x))(y)
不同。我不确定它与通配符(
f(x,)
)是如何相互作用的,我想是的,正如我用括号说的那样,它是有效的。@Finkleson我只是在完成我的评论之后才看到你的评论;)您还可以编写
g2(1,:Int)。应用(9)
。要使其工作,我需要添加括号:
(g2(1,:Int))(9)
,这很奇怪。
(g2(1,:Int))(9)
工作吗?scala有多个参数列表,因此
f(x)(y)
的解析可能与
(f(x))(y)
不同。我不确定