2012-04-15 2 views
2

У меня есть следующий фрагмент кода, который я интересно, если она может быть сжата в одну строку:Одна линия, если-то без еще п

if self.id 
    return if Party.find_by_id(self.id).name.downcase == self.name.downcase 
end 

мне было интересно, если есть в любом случае, чтобы это заявление в одна линия.

Я знаю, что вы можете использовать if statement ? then_statement : else_statement, но, надеюсь, вы можете видеть здесь, что больше нет. Возможно, break или continue или что-то в этом роде? (Вы можете сделать оптимизацию фактического кода, если вы его видите - это довольно много цель здесь)

ответ

6

Простой, просто заклинить их вместе :)

return if self.id && Party.find_by_id(self.id).name.downcase == self.name.downcase 
+0

DOH! Полностью не думал, что ...: D – Jonathan

1

Они эквивалентны:

if some_condition 
    do_something 
end 

if some_condition; do_something; end 

do_something if some_condition; 

some_condition and do_something 

Но, конечно, ваш пример уже использует два из этих вариантов:

Смежные вопросы