संपादित करें: मैं बस याद रख लिया है समतल है कि मेरे फिल्टर के रूप में एक ही प्रभाव पड़ता है औरस्काला सशर्त सूची निर्माण
मैं स्काला 2.9.2 का उपयोग कर रहा नक्शा, और कुछ शर्तों के आधार पर सूची का निर्माण करना चाहते हैं।
, निम्नलिखित पर विचार करें जहां cond (इस मामले t3 में) एक विधेय पी और प्रकार टी के एक मूल्य लेने कुछ कार्य है:
t1 :: t2 :: cond(p, t3) :: t4
व्यवहार मैं चाहता हूँ इस प्रकार है। अगर p सच है, यह देना चाहिए:
List[T](t1, t2, t3, t4)
पी गलत का आकलन करते हैं, तो यह देना चाहिए:
List[T](t1, t2, t4)
मैं शायद यह पूरी तरह से गलत तरीके के बारे में सोच रहा हूँ, लेकिन मैं संघर्ष कर रहा हूँ एक सुरुचिपूर्ण समाधान के साथ आने के लिए। मैं विकल्प हर जगह शामिल हो सकता है और उसके बाद से फिल्टर, लेकिन वह यह पढ़ने के लिए कोड नहीं बल्कि कठिन बना देता है:
def cond[T](p : => Boolean, v : T) : Option[T] =
{
p match
{
case true => Some(v)
case false => None
}
}
यह निम्न अनुमति देता है:
scala> (Some(1) :: Some(2) :: cond(true, 3) :: Some(4) :: Nil).flatten
res4: List[Int] = List(1, 2, 3, 4)
scala> (Some(1) :: Some(2) :: cond(false, 3) :: Some(4) :: Nil).flatten
res5: List[Int] = List(1, 2, 4)
हालांकि, यह, सबसे खूबसूरत समाधान नहीं है के रूप में यह आवश्यकता है उपयोगकर्ता कुछ() में अपने सभी गैर-सशर्त तत्वों को लपेटने के लिए और अंत में फ़्लैटन को याद रखना भी याद रखता है। क्या कोई और अधिक सुरुचिपूर्ण समाधान के बारे में सोच सकता है?
यह काम करता है, लेकिन यह आदर्श नहीं है, क्योंकि यह 1 :: 2 :: 3 निर्माण विधि के साथ फिट नहीं है: इसके लिए आपको ++ कुछ मामलों में :: – paulmdavies