【发布时间】:2011-08-18 11:14:17
【问题描述】:
我在Project Euler 上解决了一些问题,我提到我总是将短方法包装在 proc 函数中。我问自己“为什么?”。答案是“我不知道。也许是因为它很短?”。
那么proc函数相对于普通方法除了短之外还有什么优势呢:)
# Proc
is_prime = proc{|number| !((number%2 == 0) || (3..Math.sqrt(number).to_i).step(2).any?{|n| (number%n).zero?})}
# Ordinary method
def is_prime(number)
!((number%2 == 0) || (3..Math.sqrt(number).to_i).step(2).any?{|n| (number%n).zero?})
end
【问题讨论】:
-
代码打高尔夫球:使用偶数?方法,并检查 upto 是否采用 step 参数。
标签: ruby lambda proc-object