【问题标题】:Ternary operator if...elsif...else attempt Ruby三元运算符 if...elsif...else 尝试 Ruby
【发布时间】:2017-07-10 17:02:51
【问题描述】:

为什么这不起作用。我正在尝试重构代码以使用尽可能少的字符..

for i in 1..200                                    # 33
 if (i%3 == 0)                                     # 34
    if (i%5 == 0) ? puts "FizzBuzz" : puts 'Fizz'  # 35
   end                                             # 36
 elsif (i%5 == 0) ? puts "FizzBuzz"                # 37
   if (i%3 == 0)                                   # 38
   else puts "Buzz"                                # 39
   end                                             # 40
 else puts i                                       # 41
 end                                               # 42
end                                                # 43

【问题讨论】:

  • 你的错误是什么
  • numberGame.rb:35: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' if (i%5 == 0) ? puts "FizzBuzz" : puts 'Fizz' - 这是 5 个错误中的第一个
  • 当使用 'if' 时,动作应该在 'if'/'elif'/'else' 行和 'end' 之间。除了与三元运算符相关的错误之外,您还会遇到其他错误
  • 三元是x ? y : z。不是if x ? y : z。
  • @Mohammad 你有那个代码的工作版本吗?

标签: ruby ternary-operator


【解决方案1】:

如果你想使用嵌套的 if-else 你可以使用

(1..200).each do |num|
  if (num%3 == 0 && num%5 == 0)
    puts "BucksFizz"
  elsif num%3 == 0
    puts "Bucks"
  elsif num%5 == 0
    puts "Fizz"
  elsif 
    puts num 
  end          
end

【讨论】:

    【解决方案2】:

    使用puts i%5 == 0 ? "FizzBuzz" :'Fizz'

    而不是if (i%5 == 0) ? puts "FizzBuzz" : puts 'Fizz'

    对所有此类语句执行此操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-12
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      相关资源
      最近更新 更多