groovy
फैला हुआ संचालक
खोज…
टिप्पणियों
ज्यादातर मामलों में, प्रसार ऑपरेटर *.
कॉलिंग के समान है .collect { it.________ }
।
def animals = ['cat', 'dog', 'fish']
assert animals*.length() == animals.collect { it.length() }
लेकिन अगर विषय अशक्त है, तो वे एक अलग व्यवहार करते हैं:
def animals = null
assert animals*.length() == null
assert animals.collect { it.length() } == []
एक विधि कहलाना
assert ['cat', 'dog', 'fish']*.length() == [3, 3, 4]
ध्यान दें कि संग्रह में प्रकारों को मिलाते समय यदि विधि कुछ तत्वों में मौजूद नहीं है, तो एक groovy.lang.MissingMethodException
को फेंका जा सकता है:
['cat', 'dog', 'fish',3]*.length()
// it throws groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.length()
किसी संपत्ति तक पहुँचना
class Vector {
double x
double y
}
def points = [
new Vector(x: 10, y: -5),
new Vector(x: -17.5, y: 3),
new Vector(x: -3.3, y: -1)
]
assert points*.x == [10, -17.5, -3.3]
नोट: *
वैकल्पिक है। हम उपरोक्त कथन को भी नीचे की पंक्ति में लिख सकते हैं और ग्रूवी संकलनकर्ता अभी भी इसके बारे में खुश होंगे।
assert points.x == [10, -17.5, -3.3]
यह अशक्त है
यदि संग्रह पर कोई null
वस्तु है जो इसे NPE
नहीं फेंकता है, तो यह बदले में null
देता है:
assert ['cat', 'dog', 'fish', null]*.length() == [3, 3, 4, null]
इसे एक null
वस्तु में सीधे उपयोग करना यह भी अशक्त है:
def nullCollection = null
assert nullCollection*.length() == null
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow