Scalastyle (2016.1 IntelliJ चूक) का कहना है इस बूलियन अभिव्यक्तिScalastyle बूलियन अभिव्यक्ति सरल किया जा सकता
सरल किया जा सकताval t = Option(true)
val f = Option(false)
if(t.contains(true) && f.contains(false)) {
println("booop")
}
मैं बदल कर इस से छुटकारा पा सकते है, तो करने के लिए:
if(t.contains(true).&&(f.contains(false)))
या द्वारा & & से &
लेकिन वास्तव में यह नहीं देख रहा कि यह कैसे सरल है, क्या कोई भी स्पष्टीकरण दे सकता है क्या चल रहा है?
अद्यतन यह करने के लिए करता है, तो Vals संकलन समय पर जाना जाता है, या उन्हें स्थानीय स्तर पर परिभाषित किया जा रहा संबंधित होने के लिए प्रकट नहीं होता। निम्नलिखित कोड भी प्राप्त चेतावनी है कि अभिव्यक्ति सरलीकृत किया जा सकता है:
object TestFoo {
def bar(t: Option[Boolean]) = {
val f = Option(scala.util.Random.nextBoolean)
if (t.contains(true) && f.contains(false)) println("booop")
}
def main(args: Array[String]) = bar(t = Option(scala.util.Random.nextBoolean))
}
मैं बस कैसे मुझे लगता है कि किसी भी सरल बनाने के लिए माना जाता रहा हूँ नहीं मिलता है, वहाँ कुछ अजीब विकल्प है [बूलियन] की तुलना मैं को खो रहा है?
मुझे लगता है कि जब से तुम उन मूल्यों की घोषणा और कर रहे हैं केवल उन्हें वहाँ का उपयोग कर, यह इन-लाइन करने के लिए आप की उम्मीद कर रहा है आपके 'if' कथन – hasumedic
में वे मान नहीं दिखते हैं कि चर कहां परिभाषित किए गए हैं या यदि मान संकलित समय मामलों पर पता है। एक और उदाहरण – klogd
के साथ अपडेट किया गया जब आप इंफिक्स नोटेशन का उपयोग करते हैं तो क्या होता है? जैसे '(टी सच है) && (f गलत है)' – hasumedic