2011-08-08 2 views
5

이해하는 바와 같이 scala stdlib에서지도를 선언한다고해서 원시 유형에 특화되지 않습니다. 내가 찾고있는 것은 복싱/언 박싱의 가격을 지불하는 것이 아니라 동시에 스칼라지도의 인터페이스를 사용하는 것입니다. 분명한 선택은 지하실지도를 사용하는 것이지만, 나는 스칼라 전망이 있다고 생각하지 않습니다. 어떤 도움을 주셔서 감사합니다.기본 유형이 포함 된 스칼라 맵 값 유형

+0

키 또는 값에 기본 유형이 필요합니까? 다른 구현은 ... – PhiLho

+0

값을 나타냅니다. 두 가지 해결책을 아는 것이 정말 좋을지라도. – venechka

답변

4

인터페이스가 특수화되지 않아 현재로서는 불가능합니다. 즉, 컬렉션 자체에서 수행하는 작업과 상관없이 값을 입력하여 인터페이스를 통해 가져올 수 있습니다.

현재로서는 특별히 만족할만한 옵션이 없습니다. 편의성이 성능보다 더 중요한 경우에 Trove를 사용하여 스칼라 컬렉션에 암시 적으로 변환하면 아마 얻을 수있는 최상의 것입니다.

(필자는이 상황을 스스로 해결하려고 노력했으며 컴파일러의 현재 전문화 ​​지원 상태가 쉽지 않음을 증명할 수 있으며 기존 라이브러리를 전문적으로 다루는 것은 실용적이지 않고 자신을 만드는 것이 어렵습니다. 다행히도 앞으로의 버전에서 개선 될 것으로 기대되지만, 지금 당장은별로 유용하지 않습니다.)

+0

답변 해 주셔서 감사합니다. 컬렉션을 전문화하기 위해 실행 한 주요 어려움은 무엇입니까? 내가보고 한 많은 전문화 버그 (https://issues.scala-lang.org/secure/ViewProfile.jspa?name=ichoran)가 있는데, 스칼라 팀의 우선 순위를 결정해야할지 궁금합니다. –

+0

@Kipton Barros - 그 버그들과 내가보고하기 전에 나열된 것들이 문제를 일으켰습니다. 또한 코드 크기가 폭발적으로 증가하고 있습니다. 그리고 유형의 일부 조합은 유용하지만 다른 유형은 유용하지 않지만 다른 옵션은 선택할 가치가 없습니다 (예 : 세 가지 유형이있는 경우 두 개의 Ints 조합을 모두 하나의 Long으로 특수화하려는 경우가 있습니다. 3 가지 가능성이 있지만 현재 모두 8 가지를 전문화해야합니다.) –