目前我有一个方法,其签名为 time_in_intervals(from,til,interval,&block)
,我希望能够向它传递一个返回数字计数的简单 block 产生到 block 中的对象的数量。
我的方式目前看起来像这样
我有一个声明空 lambda 的函数
def empty
-> (x) {}
end
然后我用空的 lambda 调用我的函数并对其进行计数
time_in_intervals('7AM', '8PM', 60, &empty) #=> Returns array of times
time_in_intervals('7AM', '8PM', 60, &empty).count #=> 14
有什么办法可以做到这一点,我可以向它传递一个比 &empty
更有用的函数,这将导致返回计数而不必调用 .count
最佳答案
这个方法是你写的吗?如果是这样,请将其定义更改为仅 yield
if block_given?
否则,如果它严格需要一个 block ,您可以使用隐式 block 语法来做到这一点:
(time_in_intervals('7AM', '8PM', 60) { }).count
关于Ruby如何计算yield返回的对象数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25556508/