foo ||= []
foo << :element
थोड़ा अकड़ता हुआ महसूस होता है। क्या अधिक मुहावरेदार तरीका है?
foo ||= []
foo << :element
थोड़ा अकड़ता हुआ महसूस होता है। क्या अधिक मुहावरेदार तरीका है?
जवाबों:
(foo ||= []) << :element
लेकिन मेह। क्या यह वास्तव में इतना पठनीय है कि इसे पठनीय रखा जा सके?
fooअपने आप में एक अधिक जटिल अभिव्यक्ति है, जैसे कि (नेस्टेड) हैश जिसमें आप मूल्यों को देखते हैं, तो यह कई बार मूल्यों को देखने से बचने या लुक अप एरे वैल्यू के लिए एक और वेरिएबल खर्च करने का एक अच्छा तरीका है।
आप कर्नेल # ऐरे से भी लाभ प्राप्त कर सकते हैं , जैसे:
# foo = nil
foo = Array(foo).push(:element)
# => [:element]
जिसमें संभावित ऐरे को समतल करने का लाभ है, जैसे:
# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]
foo = fooसेट fooकरने के लिए nilजब fooअपरिभाषित है। इसके अलावा, Kernel#Arrayसमतल नहीं करता है foo। fooअगर यह एक ऐरे है तो बस वापस आ जाता है।
(foo ||= []) << :element, लेकिन मुझे यह बदसूरत लगता है।