2017-09-26 10 views
1

에서 내가 알 수있는 유일한 방법을 스칼라 immutable.TreeMap을 구축 할 수있는 방법을 찾고 :사용 지금까지 목록

var ans: TreeMap[Int, Int] = immutable.TreeMap(List(1,2,3).map(e => (e, e*2)): _*) 

1) 가변 인자를 사용하지 않고 그것을 할 수있는 방법이 있나요 _ * 통사론?

2)이 패턴은 스칼라에서 우수 사례입니까?

답변

1

vararg _ * 구문을 사용하지 않고이를 수행 할 수있는 방법이 있습니까? 이 패턴은 스칼라에서 좋은 연습 TreeMapapply 방법은 유형 (A, B)*의 가변 인자를 걸리므로

, 나는 방법

에 내장 된 다른 표시되지 않는가요?

왜 그런지는 알 수 없습니다.

대체 방법은 작동 할 수있는 toTreeMap지도 형태의 확장 방법을 제공하는 것입니다.

1

1) 다른 방법은 빈 트리 맵을 생성하고 모든 요소를 ​​추가 할 것이다 : 나는 방법은 더 나은 인에 대해 강한 감정이없는

immutable.TreeMap.empty[Int, Int] ++ (List(1,2,3).map(e => (e, e*2))) 

.

2) 예, 이것은 매우 일반적입니다.

+1

하하, 나는 어쨌든 당신이지도에 대한 목록을'++'할 수 있다는 것을 항상 잊는다. –

2

1) vararg _ * 구문을 사용하지 않고이를 수행 할 수있는 방법이 있습니까?

예, mapbreakOut 매개 변수를 사용할 수 있습니다. 이 패턴은 스칼라에서하는 것이 좋습니다)이

import scala.collection.breakOut 
import scala.collection.immutable.TreeMap 

val ans: TreeMap[Int, Int] = List(1,2,3).map(e => (e, e*2))(breakOut) 

이 변수

에 명시 적 유형 주석이 필요합니다?

스칼라 2.13의 콜렉션이 list.to(TreeMap)이 될 때까지는 괜찮습니다. 더 나은 옵션이있는 것 같지 않으므로 문제를 해결하는 모든 것을 사용하십시오.