Ruby Fibre中意外的'\ n'

时间:2010-07-11 21:45:13

标签: ruby multithreading

我正试图绕过多线程,所以我在Ruby中使用Fiber。但是,当我尝试运行我的脚本时,它告诉我在我的三元语句之后我有一个意外的换行符。我在这里错过了一些语法吗?

timer = Fiber.new do |power|
  power = power.nil? ? 'on' | power 
  start = Time.now 
  loop do 
    if power == 'off'
      now = Time.now
      puts now - start
    end
    power = Fiber.yield
  end
end

1 个答案:

答案 0 :(得分:1)

  

power = power.nil? ? 'on'|功率

正确的语法是power = power.nil? ? 'on' : power,带冒号而不是管道。

但是你可以写下这个power = 'on' if power.nil?,这个版本有点短,对大多数人来说可能更具可读性。

另外作为旁注:您使用'on''off'代替truefalse是否有特殊原因?