2016-03-29 12 views
5

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)) 
} 

मैं बस कैसे मुझे लगता है कि किसी भी सरल बनाने के लिए माना जाता रहा हूँ नहीं मिलता है, वहाँ कुछ अजीब विकल्प है [बूलियन] की तुलना मैं को खो रहा है?

+0

मुझे लगता है कि जब से तुम उन मूल्यों की घोषणा और कर रहे हैं केवल उन्हें वहाँ का उपयोग कर, यह इन-लाइन करने के लिए आप की उम्मीद कर रहा है आपके 'if' कथन – hasumedic

+0

में वे मान नहीं दिखते हैं कि चर कहां परिभाषित किए गए हैं या यदि मान संकलित समय मामलों पर पता है। एक और उदाहरण – klogd

+1

के साथ अपडेट किया गया जब आप इंफिक्स नोटेशन का उपयोग करते हैं तो क्या होता है? जैसे '(टी सच है) && (f गलत है)' – hasumedic

उत्तर

2

ऐसा लगता है कि आप विधि कॉल उपयोग के अनुरूप हैं। इन्फ़िक्स रूप में या तो सब कुछ:

(t contains true) && (f contains false) 

या सब कुछ नियमित विधि कॉल के रूप में:

t.contains(true).&&(f.contains(false)) 
1

अपने मूल्यों के साथ, t.contains(true).&&(f.contains(false)) हमेशा true देता है। तो आप true लिखकर इसे सरल बना सकते हैं, यानी print को if स्थिति के बिना निष्पादित करके।

+0

क्षमा करें, वास्तविक कोड संकलन समय पर ज्ञात मानों का उपयोग नहीं करता है। मैंने स्पष्टीकरण के लिए एक और उदाहरण जोड़ा है – klogd

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