代码之家  ›  专栏  ›  技术社区  ›  Nifriz

在线程中调用相同的过程不起作用

  •  0
  • Nifriz  · 技术社区  · 7 年前

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

    typewriter_animation

    我用 define_action 一线生机

       @timer = Thread.new do
        @engine.define_action(@map.next_field_coordinates)
      end
    

    field 是 empty true

    没有线程的相同代码可以完美地工作,但显然会在屏幕上停留5秒钟。

    我的代码出了什么问题?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Kimmo Lehto    7 年前

    您的保护条款缺少一个 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
    

    我看不出线程会有什么不同。

    推荐文章