【发布时间】:2015-04-25 11:24:55
【问题描述】:
def gen_times(factor) do
return Proc.new {|n| n*factor}
end
gen_times.class # ArgumentError 0 for 1
gen_times(3).class # Proc
gen_times = 2
gen_times.class # Fixnum
times3 = gen_times(3) # A normal, working Proc
第一个gen_times.class给出了一个ArgumentError,所以我假设它返回gen_times的返回值的类名,这在下一行确认。
但是,我分配了 gen_times,它变成了一个 Fixnum。但是,我仍然可以使用 gen_times 来返回 Procs。
我记得 Fixnum 对象具有立即值,并且对象本身用于赋值,而不是对其的引用。
那么,说 gen_times 是一个引用方法的 Fixnum 对象对吗?
【问题讨论】:
-
局部变量和局部函数可以使用相同的名称。为了明确区分它们,可以使用括号。
-
我不得不读了几遍才能弄清楚你在问什么。我认为如果您显示与代码本身内联运行代码的结果会更好,无论是作为 cmets,还是以“我试过这个:......然后发生这种情况:......所以我尝试了这个: ...然后发生了:...”