2009-09-01 17 views
20

this one जैसे प्रश्नों से बाहर आने वाले उत्तरों को देखते हुए एनपीई को पकड़ने की कोशिश करने और स्टैक ट्रेस से उलझन वाले नाम को ड्रेज करने जैसे डरावनी कार्यक्रम शामिल हैं, मैं इस सवाल से पूछ रहा हूं इसलिए मैं इसका उत्तर दे सकता हूं।स्कैला में उचित नल-सुरक्षित कोलेसिंग ऑपरेटर कैसे लिखें?

टिप्पणियां या आगे के सुधार स्वागत है।

+3

आप उस सवाल का जवाब दे दिया है बजाय चाहिए एक नया बनाने के। या, शायद, इसके अलावा। –

+3

यदि आप ऐसा कहते हैं। जब मैं पूछता हूं कि उत्तर में अस्पष्टता में लापरवाही के बाद 24 घंटे से अधिक प्रश्न पूछे गए हैं, तो इसके सापेक्ष योग्यता के बावजूद (और यह देखते हुए कि मैं केवल स्कैला प्रश्नों का उत्तर देता हूं, मेरे पास मेरे उत्तर के मूल्य का कुछ विचार है।) – extempore

+0

धन्यवाद, यह था एक समाधान देखने के लिए एक डरावनी जिसमें अपवाद शामिल हैं। जब तक कि आप अपने आवेदन को परिमाण के कई क्रम को धीमा नहीं करना चाहते हैं। – smartnut007

उत्तर

33
तो जैसा

:

case class ?:[T](x: T) { 
    def apply(): T = x 
    def apply[U >: Null](f: T => U): ?:[U] = 
    if (x == null) ?:[U](null) 
    else ?:[U](f(x)) 
} 

और कार्रवाई में:

scala> val x = ?:("hel")(_ + "lo ")(_ * 2)(_ + "world")() 
x: java.lang.String = hello hello world 

scala> val x = ?:("hel")(_ + "lo ")(_ => (null: String))(_ + "world")() 
x: java.lang.String = null 
+0

यह वास्तव में है बहुत अच्छा – jpswain

+8

मैंने उस अवलोकन को बनाने के लिए सात साल तक इंतजार किया है! धन्यवाद। – extempore

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