Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 同样的程序不适用于';在一个线程中不能工作_Ruby_Multithreading_Libgosu - Fatal编程技术网

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

我在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['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

我不知道线程会有什么不同。

我不知道您的代码有什么问题,但这不是您第一次使用线程:这只是您第一次使用多个线程。到目前为止,您编写的所有代码都是在某个程序的主线程上运行的,代码在主线程上的工作方式与在其他线程上的工作方式完全没有区别。只有当两个或多个线程共享相同的数据或以其他方式相互通信时,线程才会变得有趣。(当然,大多数情况下都是这样:-)我不知道你的代码出了什么问题,但这不是你第一次使用线程:这只是你第一次使用多个线程。到目前为止,您编写的所有代码都是在某个程序的主线程上运行的,代码在主线程上的工作方式与在其他线程上的工作方式完全没有区别。只有当两个或多个线程共享相同的数据或以其他方式相互通信时,线程才会变得有趣。(当然,大部分时间都是这样:-)是的,我错过了回报,一个愚蠢的疏忽错误,现在它起作用了!谢谢你的帮助。是的,我错过了回报,一个愚蠢的疏忽错误,现在它起作用了!谢谢你的帮助。