我在Ruby中遇到线程问题。 这是我第一次使用Threads,所以也许我忽略了一些重要的东西。
我有此过程:
def define_action(field)
false if field.nil? || field.empty?
puts field.empty? <---- ONLY FOR DEBUG
case field['special']
when 'signpost'
typewriter_animation(field['message'])
else
typewriter_animation("TO DO ... add action for #{field['special']}")
end
end
typewriter_animation
清除字段,放入文本并等待5秒钟,然后再次清除字段。
我在线程中使用define_action
@timer = Thread.new do
@engine.define_action(@map.next_field_coordinates)
end
当field
为empty
时(我在提示符下看到true
)我什么都没有,但程序继续并在屏幕上显示“要做...添加操作”
没有Thread的相同代码可以正常工作,但是显然可以使屏幕停止显示5秒钟。
我的代码有什么问题?
答案 0 :(得分:3)
您的监护人条款缺少return
。
def define_action(field)
false if field.nil? || field.empty? # this line does nothing
...
end
应该是:
def define_action(field)
return false if field.nil? || field.empty?
...
end
我不知道线程会产生什么变化。