[SCALA] 스칼라 "<-"이해를위한
SCALA스칼라 "<-"이해를위한
나는 스칼라 항상 무엇이든 "자연의 설명"을 가지고 있음을 발견했다. 항상 같은 뭔가 "오,하지만 그냥이에 호출되는 함수이와 객체 및 해당 매개 변수입니다." 어떤 의미에서, 아무것도 우리가 다른 언어에서 알고있는 정말 컴파일러 마법 없다.
내 질문은 <에 - 다음 코드에서 사용되는 연산자
for(i <- 0 to 10) println(i)
이 예에서 나는 그것이 같은 것으로 다시 쓰는 볼 수 있습니다 :
0.to(10).foreach((i:Int)=>println(i))
그러나 이것은 내가 foreach는 함수 내에서 익명 함수에 수행 됐는지 설명하지 않습니다. 당신은 내가 쓰기 시점에서 아직 선언 된 변수 객체가 아닌,하고. 그래서 무엇이며 어떻게이 foreach는 내부에 이월되고있다?
내 생각 엔 내가 마침내 사실 컴파일러 마법에 뭔가를 발견 한 것입니다
시간 내 줘서 고마워.
명확히하기 위해, 내 질문은 : 수행 방법 <- 코드의 1 라인에서 작업자의 작업 난이 함수로 호출 할 수있는 대상이 아니기 때문에.
해결법
-
==============================
1.<- = 같이, 언어 정의 키워드 상징> 그러나 뚜렷한 콘트라스트로 -> (a 정의 심볼이다). 이 기본 스칼라 문법의 일부이기 때문에, 사용자 정의 구조에 의해 수행 될 수없는 무언가이다 (당신의 예제에서 난 용) 바인딩을 만드는 데 사용할 수 있습니다.
<- = 같이, 언어 정의 키워드 상징> 그러나 뚜렷한 콘트라스트로 -> (a 정의 심볼이다). 이 기본 스칼라 문법의 일부이기 때문에, 사용자 정의 구조에 의해 수행 될 수없는 무언가이다 (당신의 예제에서 난 용) 바인딩을 만드는 데 사용할 수 있습니다.
-
==============================
2.데이브의 답변을 증대하기 위해, 여기에 대한 번역 스키마입니다 '를위한 지능형'스칼라 언어 사양에서 :
데이브의 답변을 증대하기 위해, 여기에 대한 번역 스키마입니다 '를위한 지능형'스칼라 언어 사양에서 :
-
==============================
3.이 경우, 정말 컴파일러 마법의 비트입니다. /지도를 필터링 할 수-이해에서 번역 / flatmap 형태는 많은 업데이트의 특별한 형태의 변환 방법을 적용 같은 desugaring의 특별한 비트입니다.
이 경우, 정말 컴파일러 마법의 비트입니다. /지도를 필터링 할 수-이해에서 번역 / flatmap 형태는 많은 업데이트의 특별한 형태의 변환 방법을 적용 같은 desugaring의 특별한 비트입니다.
from https://stackoverflow.com/questions/3754089/scala-for-comprehension by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 스칼라에서 미래를 취소하려면? (0) | 2019.11.02 |
---|---|
[SCALA] 어떻게 작업을 점화하는 -D 매개 변수 나 환경 변수를 전달하는 방법? (0) | 2019.11.02 |
[SCALA] 최적화 된 꼬리 재귀 함수를 보장하기 위해 스칼라 주석 무엇입니까? (0) | 2019.11.02 |
[SCALA] 어떻게 스파크 스트리밍 방송 변수를 업데이트 할 수 있습니다? (0) | 2019.11.02 |
[SCALA] 어떻게 지정된 스키마와 빈 DataFrame를 만드는 방법? (0) | 2019.11.02 |