2011-08-08 14 views
5

Anlaştığım gibi, bir haritayı scala stdlib'den bildirmek, onu ilkel türler için uzmanlaştırmaz. Aradığım şey boks/kutulama ücretini ödemek değil, aynı zamanda scala haritalarının arayüzüne sahip olmak. Belirgin bir seçim trofe haritalarını kullanmak olabilir ama ben scala görünümleri olduğuna inanmıyorum. Herhangi bir yardım takdir edildi.İlkel türden değerler ile Scala haritası

+0

Anahtarlarda veya değerlerde ilkel türüne mi ihtiyacınız var? Farklı uygulamalar ... – PhiLho

+0

Değerler için. Her iki çözümü de bilmek gerçekten güzel olurdu. – venechka

cevap

4

Bu, şu anda imkansız çünkü arayüz uzman değil. Bu, koleksiyonda yaptığınız şeyden bağımsız olarak, bunların ara yüz üzerinden elde edilmesi için değerlerin kutulacağı anlamına gelir.

Şu anda özellikle tatmin edici seçenekler yoktur; Performansın performanstan daha önemli olduğu durumlar için, Scala koleksiyonlarına bazı örtülü dönüşümler içeren Trove'u kullanmak muhtemelen alacağınız en iyisidir.

(Bu durumu kendim düzeltmeye çalıştım ve derleyicideki mevcut uzmanlık desteğinin durumu göz önüne alındığında kolay olmadığını, mevcut kütüphanenin uzmanlaşmasının şu anda pratik olmadığını ve kendinizin yaratılmasının zor olduğunu söyleyebiliriz. Umarım gelecekteki sürümler, buradaki şeyleri iyileştirir, fakat bu şu anda sizin için çok fazla bir şey değildir.)

+0

Cevabınız için teşekkürler. Koleksiyonları uzmanlaştırmak için uğraştığınız bazı temel zorluklar neler? Size bildirdiğiniz bir dizi uzmanlık hatası görüyorum (https://issues.scala-lang.org/secure/ViewProfile.jspa?name=ichoran), belki de Scala ekibi için önceliklendirilmeleri gerekip gerekmediğini merak ettim. –

+0

@Kipton Barros - Benimkileri bildirmeden önce listelenen bu ve diğer hatalar sorunlara neden oldu. Ayrıca, kod boyutundaki patlama endişe verici. Ve sonra, türlerin bazı kombinasyonlarının yararlı olduğu, diğerleri ise çok daha az değerli olduğu, fakat bunları seçmenin bir yolu olmadığı (örneğin üç tipiniz varsa, iki Int'lerin her kombinasyonunu bir Uzun, 3 olasılık, ama şu anda tüm 8 uzmanlaşmak gerekir. –