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. map,Scalding のreduce、groupBy,sort、および `scanLeftに独自の関数を追加するには、どのような規則に従う必要がありますか?
  2. Scalding は、`'inpFld -> 'outFld などのフィールドの式を Scala コードにどのように変換しますか?
  3. Scalding トランスレータが作成するデータ構造/関数は何ですか? Scalding のソース コードのどこでそれらを見つけることができますか?

ありがとう!

4

1 に答える 1

4

それは通常の Scala コードです。Scala の強みの 1 つは、その拡張性にあります。この構文により、プログラマーはプログラムの構文を拡張してドメイン固有の言語を作成できます。これは、基礎となるライブラリを使用する場合に特に役立ちます。

Scala のドメイン固有言語は、適切な時期までコードの適用を延期できるほどには翻訳されません。チェック文字 (') は、次の文字セットがシンボル、組み込みデータ型であることを意味します。演算子は、->コンマと同じように表現できる構文糖衣ですが、視覚的には「翻訳」または「これからあれ」の概念を伝えます。

あなたが見ているドメイン固有言語は、ファンクタを作成しているように見えますが、構造を作成しません。この場合、Java 仮想マシンからは、引数を取り、提供されたコードによって計算された結果を返すメソッドFunction1[Type,Type]を持つインスタンスとして認識されます。apply

于 2014-07-12T11:44:12.997 に答える