我有一个在整数上调用方法的方法:
def print_time(time = 2.days.from_now)
puts time
end
我在控制台中试过它似乎有效,但这段代码安全吗? 我的意思是:
当定义方法时,值(2.days.from_now)只评估一次吗?
感谢您帮助我澄清! :)
答案 0 :(得分:15)
Ruby每次调用方法时都会计算表达式。因此,如果您在星期二定义它,并在星期四调用它,结果将是正确的。
答案 1 :(得分:2)
你的问题不是特别清楚。
您是否担心缓存?显然,在清除缓存之前,不会再次评估被评估然后缓存的内容(即,使用操作缓存或页面缓存)。
或者您是否担心在定义方法时缓存的默认参数值,并且所有后续调用可能与默认值具有相同的值?在这种情况下,您的控制台测试是有效的,@ Linux_iOS.rb.cpp.c.lisp.n(longest.name.evar)是正确的 - Ruby每次都会评估该表达式。
出于好奇,是什么让你怀疑自己在控制台中的测试?