我很难弄清楚如何从 Scala 高阶函数定义跳转到提供的示例。它在幻灯片81上的幻灯片中提供。
这是高阶函数定义:
trait X[A] { def map[B](f: A => B): X[B] }
以下是提供的示例:
(1 to 10) map { x => x * 2 } // evaluates to Vector(2, 4, ..., 20)
(1 to 10) map { _ * 2 } // shorthand!
咦?!我在这里缺少一些步骤。我知道这些示例可能同时利用了函数定义和一些 Scala 细节。我只是没有足够的阅读 Scala 和做出连接假设的经验。
我的背景是 Java OO。我现在正在学习 Scala 和函数式编程。这不是我不理解的第一个这样的例子。这只是我觉得我有勇气发帖的第一个,因为我知道我看起来很无知。
我确实试图研究这个。首先,我查阅了 Scala“圣经”、“Scala 2nd Edition 编程”,并试图从那里理解 if(第 165-9 页)。然后,我在 StackOverflow 上进行了搜索。我发现了几个在该地区讨论的链接。但是,没有任何东西真正地一步一步地向我展示了 Scala 高阶函数定义和提供的示例之间的联系,这种联系映射到这张幻灯片中的特定实例。
这是我在 StackOverflow 上找到的:
我现在才意识到我跳过了 Google,直接来到了 StackOverflow。嗯。如果你用谷歌搜索并找到正确的链接,我很乐意看到它。我已经没有时间筛选所有使用猴子单子、胚胚等术语的 Google 链接,同时让我更加困惑并且不太可能尝试解决这个问题。