2012-03-15 13 views
12

मुझे आश्चर्य है कि आंशिक फ़ंक्शन प्रकारों के लिए शाब्दिक क्यों नहीं है। मैं लिखने के लिएकोई आंशिक फ़ंक्शन प्रकार शाब्दिक क्यों नहीं है?

val pf: PartialFunction[Int, String] = { 
    case 5 => "five" 
} 

जहां :=> तरह शाब्दिक एक कम हो जाएगा:

val pf: Int :=> String = { 
    case 5 => "five" 
} 

आंशिक कार्यों अक्सर इस्तेमाल किया जाता है और कुछ "विशेष" सुविधा स्काला में पहले से ही कर रहे हैं, तो इसके लिए क्यों कोई विशेष वाक्य रचना?

उत्तर

20

शायद इसलिए है क्योंकि आप एक शाब्दिक की जरूरत नहीं है: आप हमेशा अपनी खुद की :=> एक प्रकार इन्फ़िक्स ऑपरेटर के रूप में लिख सकते हैं अगर आप अधिक संक्षिप्त वाक्य रचना चाहते हैं:

scala> type :=>[A, B] = PartialFunction[A, B] 
defined type alias $colon$eq$greater 

scala> val pf: Int :=> String = { case 5 => "five" } 
pf: :=>[Int,String] = <function1> 

scala> pf.isDefinedAt(0) 
res0: Boolean = false 

scala> pf.isDefinedAt(5) 
res1: Boolean = true 

मैं डिजाइनरों में से एक नहीं कर रहा हूँ स्कैला भाषा का, हालांकि, यह "क्यों?" के बारे में अनुमान लगाया गया है। आपको the scala-debate list पर बेहतर उत्तर मिल सकते हैं, जो भाषा डिजाइन प्रश्नों के लिए एक अधिक उपयुक्त स्थान है।

+0

+1 मैं सिर्फ उपनाम चाल का सुझाव देने जा रहा था लेकिन मुझे नहीं पता था कि एक कदम आगे लेना और इंफिक्स फॉर्म का उपयोग करना संभव था। –

+0

@Vlad, मैं स्वीकार करूंगा कि जब मैंने पहली बार उनके बारे में सीखा, तो मुझे एक संक्षिप्त (संक्षिप्त) प्रकार इंफिक्स ऑपरेटर दुरुपयोग चरण के माध्यम से चला गया, और अभी भी लगता है कि यह एक सुंदर निफ्टी छोटी भाषा सुविधा है। –

+2

मैंने उससे पहले पूछा है और कारण यह है कि इसे भाषा में नहीं जोड़ा गया है (यह संक्षेप में '~>' के रूप में अस्तित्व में था) कुछ प्रकार के पैरामीटर अनुमानित हैं l-2-r –

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