반응형
출처
https://stackoverflow.com/questions/7938585/what-does-param-mean-in-scala
스칼라에서 파라미터:_* 는 무엇을 뜻합니까?
스칼라(2.9.1)로 새로워지면서, List[Event]가 있고 이를 Queue[Event]로 복사하고 싶습니다. 하지만 다음 문법은 대신에 Queue[List[Event]]를 yield 합니다.
val eventQueue = Queue(events)
이러한 이유로 다음은 작동합니다.
val eventQueue = Queue(events : _*)
하지만 저는 이것이 무엇인지 왜 작동 하는지 이해하고 싶습니다. Queue.apply 함수의 signature를 이미 보았습니다.
def apply[A](elems: A*)
그리고 저는 첫 번째 시도가 왜 작동하지 않는지와 두 번째(_*)의 의미가 무엇인지 이해하고 싶습니다. 이 경우 :와 _*는 무엇입니까? 그리고 왜 apply함수는 Iterable[A]를 취하지 않는 것입니까?
이 발생할 것입니다.
1개의 답변만 발췌
a: A는 타입 선언(ascription)입니다. 스칼라에서 타입 선언(ascriptions)의 목적은 무엇입니까? 라는 글을 보세요.
: _*는 가변 인자 시퀀스로 시퀀스 타입을 하나의 인수로 취급 하겠다고 컴파일러에게 알리는 타입 선언(ascription)의 특별한 인스턴스 입니다.
시퀀스나 iterable한 하나의 요소를 가지는 Queue.apply를 사용한 Queue를 생성하는 것은 완전히 유효합니다. 그래서 이는 하나의 Iterable[A]가 주어질 때 정확히 발생합니다.
반응형
'Spark' 카테고리의 다른 글
스파크 스트리밍에 관해 start(), awaitTermination(), stop()의 사용 사례는 무엇입니까? (0) | 2019.05.16 |
---|---|
스칼라에서 =와 :=의 차이점은 무엇입니까? (0) | 2019.03.29 |
Apache Spark: Row의 element값을 이름으로 얻기 (0) | 2018.11.12 |
같은 Sink로 여러개의 Spark Structured Streaming WriteStreams하기 (0) | 2018.11.05 |
왜 spark-shell은 RDD를 import한 class를 가진 파일을 불러오기를 실패할까요? (0) | 2018.09.06 |