[英]Code that expects a block - LocalJumpError: no block given (yield)
[英]Ruby Code Kata: LocalJumpError: yield called out of block
我正在尝试制作一个简单的红宝石kata。 我不太了解yield的概念,所以我不太了解这个错误的含义:
LocalJumpError: yield called out of block
本质上,我只是想通过以下代码使这些测试用例通过:
def compute
return yield
"Do not compute"
end
Test.expect(compute { "Block" }, "Block")
Test.expect(compute, "Do not compute")
第一个测试用例通过了,但是第二个没有通过。 它不应该通过。 返回收益率应在程序段的早期停止功能。 如果方法调用没有块,则应直接转到“不计算”,对吗?
您要使用block_given?
def compute
return yield if block_given?
"Do not compute"
end
yield
总是期望产生一个块,因此,如果没有块,则必须防止产生自己的产量。 值得庆幸的是,有内置的方法block_given?
可以告诉您是否提供了屏蔽。
尝试删除return语句。
调用return后,您将退出该方法,因此永远不会到达“不计算”语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.