मौजूद है:
List (3, 4, 5).exists (_ == 4)
// res20: Boolean = true
खोजें और फिल्टर करीब आ:
List (3, 4, 5).find (_ == 4)
// res16: Option[Int] = Some(4)
List (3, 4, 5).filter (_ == 4)
// res17: List[Int] = List(4)
मेरा पहला जवाब था, अन्य उत्तर के रूप में, शामिल उपयोग करने के लिए:
List (3, 4, 5).contains (4)
लेकिन फिर मैंने सोचा , यह केवल कक्षाओं के लिए बॉक्सिंग मानों के लिए काम करेगा, कक्षाओं के लिए नहीं, जो पहचान और समानता को अलग करता है। यह साबित करने के लिए, मैं एक छोटे से वर्ग है, जो साबित कर दिया मुझे गलत लिखा है: :)
class Ue (val i: Int) {
override def equals (other: Any) = other match {
case o: Ue => i == o.i
case _ => false }
}
val a = new Ue (4)
// a: Ue = [email protected]
val b = new Ue (4)
// b: Ue = [email protected] (no identity)
a == b
// res110: Boolean = true (surprise?)
a.equals (b)
// res112: Boolean = true (expected)
a.eq (b)
// res113: Boolean = false (expected)
List (a).contains (b)
// res119: Boolean = true (surprise)
List (a).exists (_ == b)
// res120: Boolean = true (expected)
List (a).exists (_ .eq (b))
// res121: Boolean = false (expected)
मैं देख रहा हूँ, मैं का उपयोग करने के बराबर है/eq/अधिक बार ==, मेरे मस्तिष्क में भेद पाने के लिए।
List (3, 4, 5).contains (4)
आईएमओ उत्तर है जो सबसे आसान है।
स्रोत
2011-05-08 13:16:43
मुझे खेद है, मैंने आपको वोट दिया, क्योंकि मैंने सोचा था कि 'शामिल' पहचान के साथ काम करेगा, समानता के साथ नहीं। मैंने आपको वोट दिया और मेरे जवाब में एक लंबा सबूत लिखना शुरू कर दिया, लेकिन इसके बजाय मैंने खुद को गलत साबित कर दिया। माफ़ कीजिये। :) –
@user और मैंने आपके उत्तर को वोट दिया क्योंकि जैसा कि आप मेरे दूसरे अपडेट में देख सकते हैं '(ए)' केवल मौजूद है (_ == ए) 'के लिए चीनी है, इसलिए हमारे उत्तर समकक्ष हैं। –
यह सिर्फ चीनी हो सकता है, लेकिन मैं एक मीठा हूं, और चूंकि आपने अपना जवाब संपादित किया है, इसलिए मैं अपना मतदान सही कर सकता हूं। (स्कैला जावा के लिए सिंटैक्टिक चीनी है, जो असेंबलर के लिए सिंटेक्टिक चीनी है ...)। –