首页 > 解决方案 > 有人可以扩展以下速记并解释它是如何工作的

问题描述

我正在查看此示例代码,在将其输入 scala repl 后,我可以看到它是如何工作的。

val twice: Int => Int =
  x => x * 2

这是类似的:

val parse: String => Option[Int] =
  s => if(s.matches("-?[0-9]+")) Some(s.toInt) else None 

有人可以解构上述方法并解释它是如何工作的吗?

我可以看到名称两次或解析,然后是 Int => Int 或 String => Option[Int] 的类型。

现在在这两个函数的第二行你有一个变量 x 或 s。我只能假设这是参数。

此外,如果您可以扩展哪些 scala 功能允许这样编写函数。

谢谢!

标签: scala

解决方案


期望的值类型

x => x * 2

Int => Int

哪个去糖

Function1[Int, Int]

因此函数定义

val twice: Int => Int = x => x * 2

相当于

val twice: Function1[Int, Int] = new Function1[Int, Int] {
  override def apply(x: Int) = x * 2
}

根据SLS 6.3 匿名函数


推荐阅读