2011-06-27 4 views
6

मेरे पास एक डोमेन क्लास है जिसमें कई अन्य डोमेन क्लास हैं। मैं बच्चों में से किसी एक को चाहता हूं और परवाह नहीं करता। उदाहरणGrails में किसी भी बच्चे को मिलता है कई

class MyDomainClass { 
    static hasMany = [thingies:OtherDomainClass] 
} 

मैं इस बेवकूफ रास्ते की तरह कर सकते हैं:

def findOne 
myInstance.thingies.each{ 
    findOne=it 
} 

लेकिन वहाँ की तरह एक बेहतर तरीका है:

def findOne = myInstance.thingies.grabTheMostConvenientOne() 

उत्तर

9

thingies एक संग्रह है, तो आप Collection से सब कुछ है आप पर निर्भर।

एक आसान तरीका आप यह कर सकता है:

def one = myInstance.thingies.asList().first() 

हालांकि, आप शायद यकीन है कि संग्रह वास्तव में कुछ तत्वों को पहले है बनाना चाहते हैं। दस्तावेज़ीकरण स्पष्ट रूप से नहीं कहता है कि first() सूची खाली होने पर इंडेक्सऑटऑफबाउंड अपवाद फेंकता है, लेकिन मुझे यह महसूस हो रहा है कि यह अभी भी हो सकता है। अगर ऐसी बात है, तो आप शायद चाहते हैं:

def one = myInstance.thingies.size() > 0 ? myInstance.thingies.asList().first() : null 

या, यदि आप सुपर संक्षिप्त कुछ पठनीयता की कीमत पर, आप इस दृष्टिकोण (courtesy John Wagenleitner) उपयोग कर सकते हैं होना चाहता हूँ:

def one = myInstance.thingies?.find { true } 
संबंधित मुद्दे