【发布时间】:2015-06-15 22:02:28
【问题描述】:
我正在努力调试我的问题;我正在尝试在一个方法中使用 Proc,所有这些都在一个类中。当我不输入“类”详细信息时,我的程序编译得很好;但是,当我指定类名时,会出现各种不同的错误。
注意:我在 CodeReview.StackExchange.com 上发布了这个问题,但它在那里是题外话; mods(?)建议我在这里问这个问题。
背景。这是给我的提示,直接取自pine.fm:
祖父时钟。编写一个方法,该方法接受一个块,并在今天过去的每个小时调用一次。那样的话,如果我要通过这个街区,一定会发出“叮!”的声音。最后,它会(有点)像落地钟一样响起。用几个不同的块来测试你的方法(包括我刚刚给你的那个)。提示:您可以使用
Time.now.hour获取当前小时。但是,这会返回 0 到 23 之间的数字,因此您必须更改这些数字才能获得普通的钟面数字(1 到 12)。
有效的代码:
def hourlyRing ring
time = Time.now.hour%12;
hour_set =[12, 1, 2, 3, 4, 5, 6, 7, 8 , 9 , 10, 11];
(hour_set[time].to_i).times do
ring.call
end
end
ring = Proc.new do
puts 'DING!'
end
hourlyRing ring
它产生以下(正确,因为这里是下午 4 点)输出:
~$ ruby GrandfatherClock.rb
DING!
DING!
DING!
DING!
不起作用的代码:
class GrandfatherClock
def hourlyRing ring
time = Time.now.hour%12;
hour_set =[12, 1, 2, 3, 4, 5, 6, 7, 8 , 9 , 10, 11];
(hour_set[time].to_i).times do
ring.call
end
end
ring = Proc.new do
puts 'DING!'
end
end
# Here's where I try to call it:
ringtime = GrandfatherClock.new
ringtime.hourlyRing ring
任何人都可以看到我的代码中的错误吗?在我看来,这是一个足够短的代码,但我不明白为什么它不能编译。也许我从根本上误解了关于 Procs 的一些东西,但我不明白到底是什么。提前谢谢你。
【问题讨论】: