2014-07-12 2 views
0

Scalding DSL이 일반적인 스칼라 코드로 어떻게 변환되는지 알아보십시오. 예를 들어Scalding DSL이 일반적인 스칼라 코드로 어떻게 변환됩니까?

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

:

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

질문 :

  1. map,가 감소 내가 끓는 내 자신의 기능을 추가하기 위해 수행해야하는 규칙, groupBy, 종류와`scanLeft?
  2. Scalding은``inpFld -> 'outFld와 같은 필드에서 표현식을 스칼라 코드로 어떻게 변환합니까?
  3. 스켈링 변환기가 만드는 데이터 구조/기능은 무엇입니까? Scalding 소스 코드에서 어디에서 찾을 수 있습니까?

고마워요!

답변

4

이것은 일반적인 스칼라 코드입니다. Scala의 한 가지 강점은 확장 성입니다. 구문을 사용하면 프로그래머가 프로그램의 구문을 확장하여 도메인 특정 언어를 만들 수 있습니다. 이것은 기본 라이브러리를 사용할 때 특히 유용합니다.

스칼라의 도메인 관련 언어는 적절한 시간까지 코드 적용을 연기 할 정도로 많은 번역을하지 않습니다. 눈금 문자 (')는 다음 문자 집합이 기호, 내장 데이터 유형임을 의미합니다. -> 연산자는 쉼표와 같은 방식으로 표현할 수있는 구문 학적 설탕이지만 시각적으로는 "번역"또는 "이것에서부터"의 개념을 부여합니다.

보고있는 도메인 관련 언어는 구조 작성을하지 않지만, 작성자가 작성하는 것처럼 보입니다. 이 경우 Java 가상 머신에서 Function1[Type,Type] 인스턴스로 볼 수 있으며 apply 메소드는 인수를 사용하여 제공된 코드로 계산 된 결과를 반환합니다.

+0

스칼라에서 val fastbirds = birds.map ('speed ->'doubledSpeed) {speed : Int => speed * 2}'가 오류없이 컴파일되도록 다른 코드가 필요한지 확인하는 데 도움이됩니다. – DarqMoth

+0

@ om-nom-nom Scala 사양의 어떤 부분은 기호를 나타내는 데 틱 문자 (')를 사용하고 구문 설탕으로 -> 연산자를 사용합니까? 이것에 대해 어디에서 읽을 수 있습니까? 감사! – DarqMoth

+0

처음 시작할 필요가 있습니다. 다음은 좋은 출발점입니다. http://docs.scala-lang.org/tutorials/tour/tour-of-scala.html –

관련 문제