scala函数返回方法的序列

时间:2016-08-13 09:44:13

标签: scala

我是scala和scala的新手。

scala> def first(x: Int)= (y: Int) => x + y
first: (x: Int)Int => Int

scala> val second= first(1)
second: Int => Int = <function1>

scala> second(2)
res8: Int = 3

我想理解上面的函数,第1个作为参数传递并返回第二个函数它什么都不做,只存储x = 1的值,然后第二个val,表示第二个函数被调用为2,然后将Y的值存储为2,然后将其称为return =&gt; x + y, 评估结果为1 + 2,结果为3。

如果我的理解是正确的,请告诉我。 如果有人可以添加内容或纠正我错了。

谢谢和问候,

1 个答案:

答案 0 :(得分:3)

scala> def first(x: Int)= (y: Int) => x + y // 1
first: (x: Int)Int => Int

scala> val second= first(1) // 2
second: Int => Int = <function1>

scala> second(2) // 3
res8: Int = 3

在第1种情况下,您创建了一个名为first的函数,该函数接受一个整数并返回一个接受整数的函数,并将其添加到传递给first的整数。

在情况2中,对first函数应用1以返回接受整数并向其添加1的函数。您已“标记”此功能second。这相当于(y : Int) => 1 + y

在案例3中,您将2应用于second函数,该函数按预期返回3.