2014-11-27 2 views
0

я следующий кусок кода:Одна линия, если заявление в Руби

if day > 31 
    day -= 31 
    month = "April" 
end 

Могу ли я записать его в одну линию отличается:

if day > 31 then day -= 31 and month = "April" end 

?

Я пытался это нравится:

if day > 31 {day -= 31; month = "April"} 

Но это не работает

+1

если день> 31, а затем - = 31; month = "April" end – ymonad

+0

Разделитель выражений '' 'not' and'. 'и' является булевым оператором. Что заставило вас думать, что это разделитель выражений? –

+0

Вы * можете * поместить его на одну строку, но это приводит к тому, что код становится менее читаемым. Он не будет работать быстрее, так зачем это делать, если это затрудняет понимание кода? Если бы я столкнулся с этим в обзоре кода, там была бы лекция о написании поддерживаемого кода и мгновенного изменения кода. –

ответ

7
(day -= 31; month = "April") if day > 31 

Альтернативный способ (как было предложено @mudasobwa в комментариях ниже):

day, month = day - 31, "April" if day > 31 
+0

Спасибо! Поэтому я просто использовал неправильный тип скобок – dimitryeurope

+0

в основном да. В рубине одна строка, если выражение 'statement if condition' – shivam

+5

Или, без скобок:' день, месяц = ​​день - 31, "апрель", если день> 31'. – mudasobwa

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