मेरे पास एक कोड है जिसे मुझे eval
के भीतर उपयोग करने की आवश्यकता है। कभी-कभी मुझे eval code से बाहर निकलना पड़ता है, लेकिन मेरी कोशिश त्रुटियों का कारण बनती है।ruby - अंदर eval से कैसे वापस आना है?
उदा .:
# expected to see 1, 2 and 5; not 3 nor 4; and no errors
eval "puts 1; puts 2; return; puts 3; puts 4" # => Error: unexpected return
puts 5
मैं return
, end
, exit
, break
साथ करने की कोशिश की, और मैं सफलता नहीं मिल सका। exit
त्रुटियों उठाना नहीं है, लेकिन फिर मैं 5.
(ध्यान दें।: मुझे पता है कि eval
बुराई है, लेकिन इस मामले में मैं इसे उपयोग करने की आवश्यकता) नहीं मिलता है
मुझे कुछ अजीब पता चला। 'ब्रेक' 'उपज 'ब्लॉक से बाहर कूदता है। तो, मैं कर सकता हूं: 'def do_yield; प्राप्ति; समाप्त; do_yield {eval "1 रखता है; 2 डालता है; ब्रेक; 3 रखता है"}; 5' रखता है और मुझे अपेक्षित परिणाम मिलते हैं। मुझे नहीं पता कि यह क्यों काम करता है! –