मैं हाल ही में एक सहयोगी के साथ निम्नलिखित रूबी वाक्य रचना चर्चा कर रहा था:परिवर्तनीय असाइनमेंट के बाद कथन - कितना आम है?
value = if a == 0
"foo"
elsif a > 42
"bar"
else
"fizz"
end
मैं तर्क की इस तरह ज्यादा व्यक्तिगत रूप से नहीं देखा है, लेकिन अपने साथी लिखते हैं कि यह वास्तव में एक बहुत ही आम Rubyism है। मैंने इस विषय को गुमराह करने की कोशिश की और मुझे कोई लेख, पेज, या एसओ सवाल नहीं मिला, मुझे विश्वास है कि यह एक बहुत ही तथ्यपूर्ण तकनीक हो सकती है। एक अन्य सहयोगी, तथापि, वाक्य रचना भ्रामक पाता है और बजाय इस तरह से ऊपर तर्क लिखना होगा:
if a == 0
value = "foo"
elsif a > 42
value = "bar"
else
value = "fizz"
end
नुकसान वहाँ value =
के बार-बार घोषणाओं और एक अंतर्निहित else nil
के नुकसान किया जा रहा है, अगर हम इसका इस्तेमाल करना चाहता था। यह भी रूबी में पाए जाने वाले कई अन्य वाक्य रचनात्मक चीनी विशेषताओं के साथ लाइनों की तरह लगता है।
मेरा सवाल है, रूबी में यह तकनीक कितनी आम है? क्या इस बात पर सर्वसम्मति है कि समुदाय को ऐसा लगता है कि इसका इस्तेमाल किया जाना चाहिए या इससे बचा जाना चाहिए?
मैं कहूंगा, यह काफी मूर्खतापूर्ण है। मैं अक्सर इसका इस्तेमाल करता हूं। –
नोट: यह 'if' कथन नहीं है, यह एक 'if' * अभिव्यक्ति * है, जो ठीक है * क्यों * यह पहली जगह में काम करता है। (वास्तव में, रूबी में कोई बयान नहीं है, सबकुछ एक अभिव्यक्ति है और सब कुछ एक मूल्य देता है।) –
यह 'x = case (y) के समान है; जब .... 'और' x = (वाई = 3)? 3: 1', जो आम हैं। –