0

请帮助了解 Scalding DSL 如何转换为常规 Scala 代码。

https://github.com/twitter/scalding/wiki/Fields-based-API-Reference#sortBy

例如:

val fasterBirds = birds.map('speed -> 'doubledSpeed) { speed : Int => speed * 2 }

问题:

  1. 我需要遵循哪些约定才能将自己的函数添加到Scalding map,reduce、groupBy,sort 和 `scanLeft?
  2. Scalding 如何将 `'inpFld -> 'outFld 等字段上的表达式转换为 Scala 代码?
  3. Scalding 翻译器创建了哪些数据结构/函数?在 Scalding 源代码中哪里可以找到它们?

谢谢!

4

1 回答 1

4

那是常规的 Scala 代码。Scala 的一大优势在于它的可扩展性。该语法允许程序员扩展程序的语法以创建特定领域的语言。这在使用底层库时特别有用。

Scala 的特定领域语言不能翻译那么多,它允许您将代码的应用推迟到适当的时间。刻度字符 (') 表示以下字符集是符号,内置数据类型。运算符是语法糖,可以以与逗号相同的->方式表达,但在视觉上,它赋予了“翻译”或“从这个到那个”的概念。

您正在查看的特定领域语言不会创建结构,尽管它看起来确实创建了一个仿函数。在这种情况下,Java 虚拟机将其视为一个Function1[Type,Type]实例,该实例具有一个apply方法,该方法接受其参数并返回由提供的代码计算的结果。

于 2014-07-12T11:44:12.997 回答