मुझे लिफ्ट नहीं पता, लेकिन यह एक सामान्य सवाल है। सबसे पहले, ::
एक स्काला विपक्ष ऑपरेटर है:
scala> 1 :: 2 :: List(3, 4)
res0: List[Int] = List(1, 2, 3, 4)
इसका मतलब है कि super.validations
एक दृश्य में किसी प्रकार का है और valMinLen(3, "Link URL must be at least 5 characters") _
कि सूची में एक भी मूल्य है।
संदर्भ में यह स्पष्ट लग रहा है कि ओवरराइड validations
विधि में वे super
संस्करण बुला रहे हैं से और शुरुआत में कुछ अतिरिक्त सत्यापन पहले जोड़ें।
यह अतिरिक्त सत्यापन valMinLen()
पर कॉल द्वारा बनाया गया है। हालांकि यह अतिरिक्त कॉल validations
सूची के प्रकार से मिलान करने वाला तत्व वापस नहीं करता है - लेकिन एक फ़ंक्शन। फ़ंक्शन वैल्यू को प्रीपेड करने के बजाय हम स्पष्ट रूप से कह रहे हैं (_
प्रत्यय` जोड़कर) कि हम फ़ंक्शन को प्रीपेड करना चाहते हैं, न कि उस फ़ंक्शन का रिटर्न वैल्यू।
scala> def f = 3
f: Int
scala> def g = 4
g: Int
scala> val listOfInts = List(f, g)
listOfInts: List[Int] = List(3, 4)
scala> val listOfFunctions = List(f _, g _)
listOfFunctions: List[() => Int] = List(<function0>, <function0>)
listOfInts
और listOfFunctions
के प्रकार की तुलना करें:
कोड स्निपेट एक हजार शब्दों के लायक है। मेरा मानना है कि f _
वाक्यविन्यास को स्केल दुनिया में आंशिक रूप से लागू फ़ंक्शन कहा जाता है।
स्रोत
2012-01-10 18:42:21
तो आप इसे घोषित करने से पहले 'न्यूनतम सत्यापन' का संदर्भ दे सकते हैं? – ziggystar
घोषणापत्र आदेश स्काला में कोई फर्क नहीं पड़ता, यह ज्यादातर मौजूदा भाषाओं में नहीं है। – Ramses