5

Ben Bayt değerlerine sadece maçları ama @switch eklerken diyor bu pattern match adres:Scala neden bu maçı bir anahtara göre optimize edemiyor?

anahtarı açıklamalı maçı

@switch için yayarlar olamazdı Burada ne eksik?

  • bir Java arabirimine bu sabit tuttuktan public static final byte alanları kullanarak İşaretleme
  • (Ben de denedim onları yerine byte ait int yapma): Zaten denedim ve işe yaramadı neyi Bilginize

    , Scala Message arkadaşı ile final val olarak alanlar

  • refakatçi nesne
at @inline gibi alanları işaretleme nesne

Burada kesinlikle kayboldum.

+0

Bu [imkansız] (http://www.scala-lang.org/api/current/index.html#scala.annotation.switch): 'olmayan bir anahtarlama anahtar üretimi engelleyebilir: Bu derleme ' . – senia

+0

Bu gönderi, orijinal poster hala çevrede ise, soruyu tamamlanmayan bir ölü bağlantı içeriyorsa, şimdi – lijat

+0

şimdi doğru bağlantıyı içerdiğini düzeltebilir misiniz? –

cevap

2

vals nihai hale ve Byte ek açıklama çıkarıyordu scala-user forumda sağlanan cevap:

object Message { 
    final val Authentication = 'R' 
    final val BackendKeyData = 'K' 
    final val Bind = 'B' 
    final val BindComplete = '2' 
} 

Şimdi @switch doğru bir lookupswitch üretir (bir tableswitch oluşturmaz ama yeterince iyi) .