Ruby 同样的程序不适用于';在一个线程中不能工作
我在Ruby中的线程有问题。 这是我第一次使用线程,所以我可能忽略了一些重要的东西 我有以下程序:Ruby 同样的程序不适用于';在一个线程中不能工作,ruby,multithreading,libgosu,Ruby,Multithreading,Libgosu,我在Ruby中的线程有问题。 这是我第一次使用线程,所以我可能忽略了一些重要的东西 我有以下程序: def define_action(field) false if field.nil? || field.empty? puts field.empty? <---- ONLY FOR DEBUG case field['special'] when 'signpost' typewriter_animation(field
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
当字段
为空
(我在提示中看到true
)时,结果除此之外没有任何结果,但过程继续并在屏幕上打印“要做…添加操作”
没有线程的相同代码可以完美地工作,但显然会在屏幕上停留5秒钟
我的代码有什么问题?您的guard子句缺少一个
返回值
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
我看不出线程会有什么不同。您的guard子句缺少一个返回值
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
我不知道线程会有什么不同。我不知道您的代码有什么问题,但这不是您第一次使用线程:这只是您第一次使用多个线程。到目前为止,您编写的所有代码都是在某个程序的主线程上运行的,代码在主线程上的工作方式与在其他线程上的工作方式完全没有区别。只有当两个或多个线程共享相同的数据或以其他方式相互通信时,线程才会变得有趣。(当然,大多数情况下都是这样:-)我不知道你的代码出了什么问题,但这不是你第一次使用线程:这只是你第一次使用多个线程。到目前为止,您编写的所有代码都是在某个程序的主线程上运行的,代码在主线程上的工作方式与在其他线程上的工作方式完全没有区别。只有当两个或多个线程共享相同的数据或以其他方式相互通信时,线程才会变得有趣。(当然,大部分时间都是这样:-)是的,我错过了回报,一个愚蠢的疏忽错误,现在它起作用了!谢谢你的帮助。是的,我错过了回报,一个愚蠢的疏忽错误,现在它起作用了!谢谢你的帮助。