【发布时间】:2021-05-04 13:59:16
【问题描述】:
我对 ruby 还是很陌生,我试图理解 Procs,但我认为我误解了如何正确使用它们。我想在 proc 中存储一个动作并稍后检索存储的动作。这是我到目前为止所做的,这显然是不正确的并且不起作用。
我有以下方法:
def assign_proc_vars(action)
Proc.new { |action| puts action }
end
那么我有:
def call_action_one
assign_proc_vars "action1"
end
还有:
def call_action_two
assign_proc_vars "action2"
end
然后在我的代码中:
call_action_two
最后,在一个新的方法中:
def handle_action
action = assign_proc_vars
curr_action = action.call
if curr_action == "action2"
elsif curr_action == "action1"
end
end
【问题讨论】:
-
我完全不明白你为什么要这样写代码,但最紧迫的错误是
puts返回nil。您确定要返回该值,而不是将其打印到 STDOUT?所以,从你的过程中删除单词puts。 -
换句话说,按照您目前的编写方式,
curr_action将始终等于nil,而不是"action1"或其他。