저는 스칼라를 처음 접했습니다. 스칼라 코드에서 다른 사람들이 쓴 스칼라 코드를 읽음으로써 스칼라 코드를 배울 때 스칼라 코드에서 다른 언어와 다른 점은 패턴 매칭이다.스칼라에서 패턴 매칭이 얼마나 빠릅니다.
동시에 내가 제공하는 편리함과 표현력을 느낄 수 있으며 잠재적 인 성능 비용에 궁금증을 느끼는 것을 도울 수 없습니다. 일반적으로 말해서 얼마나 빨리 match
입니까?
먼저, 스칼라에서 IMO 인 match
은 다른 언어로 switch-case
에 해당합니다. 위의 코드는 if-else
문에 해당하는 코드로 정확하게 빠른 경우 초보자로서 예,
color match {
0 => println "color is red!"
1 => println "color is green!"
2 => println "color is blue!"
}
, 나는 알고 싶어? 지금 사람들을 복용 둘째
, "고급"예를 들어, 다시 기능 :
이 경기의 다른 기능 (목록 일치, 쌍 일치 등) 또는 위의 코드에 관해서는expr match {
Animal(name) => ...
Animal(name, age) => ...
Animal(_, _, id) => ...
}
, 내가 궁금합니다 스칼라가이 멋진 사용법을 어떻게 구현 했습니까? 그리고 가장 중요한 것은이 코드가 얼마나 빠를 것이라고 기대할 수 있습니까? (말하자면, 그들은 여전히 첫 번째 경우 match
만큼 빠르지 않습니까? 아니면 조금 느린가, 아니면 리플렉션과 같은 일부 기술을 사용하여 매우 느려지는 것입니까?)
미리 감사드립니다.
은 상황에 따라 달라집니다 :
isInstanceOf
(NO 반사 또는 유사한 물건)을 통해 수동 검사 등의 성능을 (컴파일러가 뭔가를 최적화 할 수있는 경우, 또는 더 나은) 그러나 같은이 상수를 포함하는 제한된 경우에,이 같이있을거야 자바 스위치. 내장 case 클래스 패턴에 패턴 매칭이 필요한 경우 인스턴스 체크와 필드 검색을 수행합니다. 일반적인 경우,'unapply' 메소드 전체가 호출됩니다 (예, 느리다). – Alec