This is what the docs have to say:
यह एक proc वस्तु मामले बयान में when
खंड का लक्ष्य होना करने के लिए अनुमति देने के लिए है।
यह एक, शायद काल्पनिक, उदाहरण है:
even = proc { |x| x % 2 == 0 }
n = 3
case n
when even
puts "even!"
else
puts "odd!"
end
यह काम करता है क्योंकि case/when
मूल रूप से इस तरह क्रियान्वित किया जाता है: ===
फोन करके
if even === n
puts "even!"
else
puts "odd!"
end
case/when
चेकों जो शाखा निष्पादित करने के लिए when
खंडों के तर्कों पर, पहला सिक्योरिटी मान देता है जो सच्चाई देता है।
समानता ऑपरेटर (==
) की समानता के बावजूद यह एक मजबूत या कमजोर रूप नहीं है। मैं ===
ऑपरेटर के बारे में सोचने की कोशिश करता हूं "ऑपरेटर" से संबंधित है। Class
इसे परिभाषित करता है ताकि आप यह जांच सकें कि कोई ऑब्जेक्ट वर्ग (यानी वर्ग का एक उदाहरण या वर्ग का सबक्लास है) Range
यह जांचने के लिए परिभाषित करता है कि श्रेणी (यानी सीमा में शामिल है), और इसी तरह। यह वास्तव में Proc
केस अधिक समझ में नहीं आता है, लेकिन इसके बारे में सोचें कि ऑपरेटरों से संबंधित है, जैसा कि ऊपर मेरा उदाहरण है; मैंने एक ऑब्जेक्ट परिभाषित किया है जो निर्धारित कर सकता है कि से भी संख्याओं का सेट है या नहीं।
ओह लंबाई माणिक क्रम में चला जाता है जो अच्छा मामले/जब ब्लॉक के लिए :-) 'स्ट्रिंग ===" foo "=> true' –