5

मैं इस pattern match कि बाइट मूल्यों पर केवल से मेल खाता है लेकिन जब मैं @switch जोड़ने यह कहता है:स्कैला इस मैच को स्विच में अनुकूलित क्यों नहीं कर सकता?

स्विच एनोटेट मैच @switch को

उत्सर्जन नहीं कर सकता है क्या मैं यहाँ याद आ रही है?

बस FYI करें, क्या मैं पहले से ही की कोशिश की है और काम नहीं किया:

  • एक जावा इंटरफ़ेस को यह निरंतर आगे बढ़ते और public static final byte फ़ील्ड का उपयोग कर
  • (मैं भी कोशिश की है उन्हें byte के बजाय int बनाने) अंकन स्काला Message साथी पर final val जैसे क्षेत्रों आपत्ति
  • साथी वस्तु
पर @inline जैसे क्षेत्रों को चिह्नित करना

मैं निश्चित रूप से यहां खो गया हूं।

+0

यह [असंभव] (http://www.scala-lang.org/api/current/index.html#scala.annotation.switch): 'गैर-शाब्दिक स्विच जनरेशन को रोक सकता है: यह संकलित नहीं होगा ' । – senia

+0

इस पोस्ट में एक मृत लिंक है जो प्रश्न को अधूरा बना देता है, अगर मूल पोस्टर अभी भी आसपास है, तो क्या आप – lijat

+0

को ठीक कर सकते हैं, इसमें सही लिंक शामिल है। –

उत्तर

2

जवाब के रूप में scala-user मंच पर प्रदान की Vals अंतिम बनाने और Byte एनोटेशन को हटाने गया था:

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

अब @switch सही ढंग से उत्पन्न एक lookupswitch (यह एक tableswitch उत्पन्न नहीं करता है, लेकिन यह काफी अच्छा है) ।

संबंधित मुद्दे