синтаксис встроенного оператора if / elsif с ruby - PullRequest
0 голосов
/ 21 мая 2019

Возможно ли объявить оператор if elsif встроенным?

Нравится x > 2 ? "Greater" : "Equal or lower"

if x == 2 
  puts "Equal"
elsif x > 2 
  puts "Greater"
else
  puts "Lower"

Ответы [ 3 ]

3 голосов
/ 21 мая 2019

Еще три способа:

(x == 2 && "Equal") || (x > 2 && "Greater") || "Lower"

case x <=> 2 when -1 then "Lower" when 0 then "Equal" else "Greater" end

["Equal", "Greater", "Lower" ][x <=> 2]
3 голосов
/ 21 мая 2019

Да, вы можете сделать это двумя способами:

  1. с точкой с запятой

    if x == 2; "Equal"; elsif x > 2; "Greater"; else; "Lower"; end
    
  2. с then:

    if x == 2 then "Equal" elsif x > 2 then "Greater" else "Lower" end
    

Также имейте в виду, что if/unless являются выражениями с возвращаемым значением, например:

val = if x == 2 then "Equal"
      elsif x > 2 then "Greater"
      else "Lower"
      end

или

puts(if x == 2 then "Equal"
  elsif x > 2 then "Greater"
  else "Lower" end
)
2 голосов
/ 21 мая 2019

Конечно, вы можете написать

x == 2 ? "Equal" : x > 2 ? "Greater" : "Lower"

Но я бы не рекомендовал писать такие строки, потому что IMO их трудно читать и понимать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...