2012-03-18 4 views
3

Можно ли это сделать в рубине?Ruby lazy if statement without no operator

variablename = true 
if variablename 
    puts "yes!" 
end 

Вместо этого

variablename = true 
if variablename == true 
    puts "yes!" 
end 

Edit: также рассматривает имеющие:

variablename = 0 #which caused my problem 

Я не могу получить, чтобы работать. Является ли такой стиль высказывания, если это возможно? Я учусь рубины, и это возможно в PHP, но им не уверен, как сделать это правильно в рубине

+3

Сказать что-то вроде «Я не могу заставить его работать» не поможет никому диагностировать то, что вы» повторять неправильно; как показано, он отлично работает для меня. –

+0

У меня было это my variablename = 0 и не мог понять, почему «это не сработает». Ниже я вижу его, что ruby ​​считает 0 истинным – Akshat

+0

Я вижу, что я устанавливаю истинное значение, но здесь я спрашиваю, возможен ли этот стиль кодирования. Прилагаю – Akshat

ответ

8

уверен, что это возможно

все, кроме nil и false трактуются как верно в рубине. Значение:

var = 0 
if var 
    # true! 
end 

var = '' 
if var 
    # true! 
end 

var = nil 
if var 
    # false 
end 
+0

Интересно. что '0' - это то, что меня смущает – Akshat

+3

Это не рассматривается как 'истина', а просто * правдиво *, поэтому только в операторах, которые запрашивают trutyiness (например,' if' или 'case'), это эквивалентно. Но если вы сравните истинные ценности с «истинным», вы все равно получите неравновесность. –

1

Возможно вообще. В рубине только nil и false считается ложным, любое другое значение истинно.

3

xdazz и Влад правильно с их ответами, так что вам нужно будет поймать 0 отдельно:

variable = false if variable.zero? # if you need 0 to be false 
puts "yes!" if variable    # now nil, false & 0 will be considered false 
+2

Более «рубиновый» способ будет «variable = false if variable.zero?». Сказав это, следует понимать ограничения (?) Языка и не использовать нуль - такие случаи. – Jakobinsky

+0

Спасибо, обновил свой ответ, чтобы отразить это. И вы правы в выборе дизайна, сделанных в рубине, но если это была проблема бизнес-логики, которая требует действовать, а не выбор программ, это уместно. –