繁体   English   中英

Ruby代码卡塔:LocalJumpError:产量超出范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM