【问题标题】:Difference between these two scala function definitions这两个scala函数定义之间的区别
【发布时间】:2015-12-26 10:04:30
【问题描述】:

我正在阅读 Scala School 基础教程 https://twitter.github.io/scala_school/basics.html。

我试图了解这两个定义之间的区别。

另外,如果有人可以在这种情况下解释柯里化与部分应用。

def multiply(m: Int)(n: Int): Int = m * n

def multiply(m: Int,n: Int): Int = m * n

【问题讨论】:

标签: scala


【解决方案1】:

区别仅在于您实际调用此方法的方式。在 second 情况下,您唯一的选择是同时传递两个参数,例如 multiply(2,2)。在first 的情况下,您可以传递一个参数并获取函数Int => Int,然后使用另一个参数调用它:

val f: Int => Int = multiply(2) _

f(2) // 4
f(3) // 6
f(525) // 1050

柯里化方法的真正威力在于第二个参数是隐式的,因此您不必显式传递它。

implicit val x = 2
def multiply(m: Int)(implicit n: Int): Int = m * n

multiply(5) //10

【讨论】:

  • 好的。那种现在是有道理的。我理解了。只是想把我脑海中的点点滴滴联系起来。第一个定义与codedef multiply2(a:Int) = { b:Int => a * b }code 我是 scala 新手,所以请原谅我的密集。你如何用英文阅读这可能有助于我理解它
猜你喜欢
  • 2017-10-20
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 2023-01-28
  • 1970-01-01
相关资源
最近更新 更多