-2

私はルビーに不慣れです。次のようなStationというクラスを作成しました。

class Station

  def initialize()
    @no_crates = 5
    while(true)
      sleep(1)
      @no_crates = Integer(@no_crates) + 1
    end
  end

  def get_no_crates()
    return @no_crates
  end
end

変数@no_cratesは時間の経過とともに増加するはずなので、このクラスを別のスレッドで実行したいと思います。どうすればそれを実行してから、get_no_crates()関数を時々呼び出して@no_cratesを取得できますか?

私は次のことを試しましたが、うまくいかないので

st =  Thread.new{ Station.new()}
while(true)
  sleep(1)
  puts st.get_no_crates()
end
4

1 に答える 1

3

これを見て、あなたが間違っていたことを理解してみてください。

class Station

  def initialize()
    @no_crates = 5
  end

  def run
    while(true)
      sleep(1)
      @no_crates = Integer(@no_crates) + 1
    end
  end

  def get_no_crates()
    return @no_crates
  end
end


station = Station.new
st =  Thread.new{ station.run }
while(true)
  sleep(1)
  puts station.get_no_crates()
end

これが見栄えの良いバージョンです

class Station

  attr_reader :no_crates

  def initialize
    @no_crates = 5
  end

  def run
    loop do
      sleep 1
      @no_crates = @no_crates + 1
    end
  end
end

station = Station.new
st =  Thread.new{ station.run }
loop do
  sleep 1 
  puts station.no_crates
end
于 2012-12-21T05:10:40.327 に答える