[SCALA] 무엇`을 수행합니다 _ *`(콜론 스타 밑줄) 스칼라합니까?
SCALA무엇`을 수행합니다 _ *`(콜론 스타 밑줄) 스칼라합니까?
이 질문에서 다음 코드 조각이 :
def addChild(n: Node, newChild: Node) = n match {
case Elem(prefix, label, attribs, scope, child @ _*) => Elem(prefix, label, attribs, scope, child ++ newChild : _*)
case _ => error("Can only add children to elements!")
}
++를 newChild 아이 : _ * 그 안에 모든 것이이 작품을 제외하고 꽤 명확하다
그것은 무엇을합니까?
I은 서열 [노드]가 다른 노드와 연결 한 다음 이해? 무엇을 수행합니다 _ *합니까?
해결법
-
==============================
1.순서 1 그것은 "표시가".
순서 1 그것은 "표시가".
생성자 서명 봐
new Elem(prefix: String, label: String, attributes: MetaData, scope: NamespaceBinding, child: Node*)
이는라고한다
new Elem(prefix, label, attributes, scope, child1, child2, ... childN)
그러나 여기 그래서이 결과 시퀀스는 생성자에 대한 입력으로서 사용될 수 있도록 시퀀스 만, 자식 1 아닌 자식 2 등이있다.
해피 코딩.
1 이것은 SLS에 cutesy 이름을 가지고 있지 않지만, 여기 세부 정보입니다. 얻을 수있는 중요한 것은 스칼라 반복 매개 변수를 사용하여 메서드에 인수를 결합하는 방법 (노드 * 위로 표시된대로)이 변화한다는 것입니다.
_ * 유형 약어는 SLS의 "4.6.2 반복 매개 변수"에서 설명합니다.
-
==============================
2.아이 ++를 newChild : _ * 서열 노드 *에 [노드] (시퀀스보다, 우리는 가변 인자 작업 오히려있어 컴파일러를 알려줍니다) 확장합니다. 가변 인자만을 받아 들일 수있는 방법에 특히 유용합니다.
아이 ++를 newChild : _ * 서열 노드 *에 [노드] (시퀀스보다, 우리는 가변 인자 작업 오히려있어 컴파일러를 알려줍니다) 확장합니다. 가변 인자만을 받아 들일 수있는 방법에 특히 유용합니다.
-
==============================
3.위의 모든 대답은 훌륭하지만, 그냥이를 설명하는 샘플이 필요합니다. 여기있어 :
위의 모든 대답은 훌륭하지만, 그냥이를 설명하는 샘플이 필요합니다. 여기있어 :
val x : Seq[Seq[Int]] = Seq(Seq(1),Seq(2)) def f(arg: Seq[Any]*) : Int = { arg.length } f(x) //1 as x is taken as single arg f(x:_*) // 2 as x is "unpacked" as a Seq[Any]*
이 인수를 풀고 결합하는 가변 인자 매개 변수에 이러한 요소를 함수 호출보다는 하나의 인수로 X를 확인하시기 바랍니다 : _ * 할 컴파일러에게하는 것입니다 그래서 지금 우리는 무엇을하는 것은 알고있다.
그래서 간단히 말해서에서는 : 패스 인수는 매개 변수를 가변 인자 할 때 _ * 모호성을 제거하는 것입니다.
-
==============================
4.나 같은 게으른 사람의 일부를 들어, 그냥 가변 인자에 서열을 변환!
나 같은 게으른 사람의 일부를 들어, 그냥 가변 인자에 서열을 변환!
from https://stackoverflow.com/questions/6051302/what-does-colon-underscore-star-do-in-scala by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 : 어떤 TypeTag이고 내가 그것을 어떻게 사용합니까? (0) | 2019.10.28 |
---|---|
[SCALA] 중괄호와 괄호 사이 스칼라의 공식 차이는 무엇, 그리고 때 사용해야인가? (0) | 2019.10.28 |
[SCALA] 작업하지 직렬화 : java.io.NotSerializableException 클래스 만하지 개체에 대한 폐쇄 외부 함수를 호출 할 때 (0) | 2019.10.28 |
[SCALA] 스칼라 문맥 볼 경계는 무엇인가? (0) | 2019.10.28 |
[SCALA] 스칼라 2.8 브레이크 아웃 (0) | 2019.10.28 |