我正试图绕过多线程,所以我在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
答案 0 :(得分:1)
power = power.nil? ? 'on'|功率
正确的语法是power = power.nil? ? 'on' : power
,带冒号而不是管道。
但是你可以写下这个power = 'on' if power.nil?
,这个版本有点短,对大多数人来说可能更具可读性。
另外作为旁注:您使用'on'
和'off'
代替true
和false
是否有特殊原因?