三元运算符if ... elsif ... else尝试Ruby

时间:2017-02-21 07:29:34

标签: ruby ternary-operator

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

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

2 个答案:

答案 0 :(得分:2)

如果你想使用嵌套的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

答案 1 :(得分:1)

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

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

为所有此类陈述执行此操作