5

Ich habe dies pattern match die nur auf Byte Werten übereinstimmt, aber wenn ich die @switch hinzufügen sagt es: hierWarum kann Scala dieses Match nicht auf einen Switch optimieren?

nicht Schalter kommentierte @switch Spiel

emittieren könnte Was bin ich?

Gerade FYI, was ich versucht habe bereits und hat nicht funktioniert:

  • Verschieben dieser Konstante wird eine Java-Schnittstelle und mit public static final byte Felder
  • (Ich habe auch versucht, sie int statt byte machen) Kennzeichnung die Felder als final val an der Scala Message Begleiter Objekt
  • die Felder wie @inline am Begleitobjekt Kennzeichnung

Ich bin definitiv hier verloren.

+0

Es ist [unmoglich] (http://www.scala-lang.org/api/current/index.html#scala.annotation.switch): 'ein nicht literal kann verhindern, Schalter-Generation: das würde nicht kompilieren . – senia

+0

Dieser Beitrag enthält einen toten Link, der die Frage unvollständig macht, wenn das Originalplakat noch da ist, könnten Sie bitte das – lijat

+0

beheben, jetzt enthält es den richtigen Link. –

Antwort

2

Die Antwort wie am scala-user Forum zur Verfügung gestellt wurde, die vals endgültig und Entfernen der Byte Anmerkung machen:

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

Nun ist die @switch erzeugt richtig ein lookupswitch (es ein tableswitch nicht erzeugen ist, aber es ist gut genug) .

Verwandte Themen