我是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。
如果我的理解是正确的,请告诉我。 如果有人可以添加内容或纠正我错了。
谢谢和问候,
答案 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.