คำถามติดแท็ก proc-object

7
ใช้ 'return' ในบล็อก Ruby
ฉันกำลังพยายามใช้ Ruby 1.9.1 สำหรับภาษาสคริปต์แบบฝังเพื่อให้โค้ด "end-user" ถูกเขียนในบล็อก Ruby ปัญหาหนึ่งของเรื่องนี้คือฉันต้องการให้ผู้ใช้สามารถใช้คีย์เวิร์ด 'return' ในบล็อกได้ดังนั้นพวกเขาจึงไม่จำเป็นต้องกังวลเกี่ยวกับค่าส่งคืนโดยปริยาย ด้วยเหตุนี้สิ่งนี้จึงเป็นสิ่งที่ฉันต้องการจะทำได้: def thing(*args, &block) value = block.call puts "value=#{value}" end thing { return 6 * 7 } หากฉันใช้ 'return' ในตัวอย่างข้างต้นฉันจะได้รับ LocalJumpError ฉันทราบว่านี่เป็นเพราะบล็อกที่เป็นปัญหาเป็น Proc ไม่ใช่แลมบ์ดา รหัสจะใช้งานได้ถ้าฉันลบ 'return' ออก แต่ฉันอยากจะใช้ 'return' ในสถานการณ์นี้จริงๆ เป็นไปได้หรือไม่ ฉันได้ลองแปลงบล็อกเป็นแลมด้าแล้ว แต่ผลลัพธ์ก็เหมือนกัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.