Ошибка ruby ​​- могу ли я преобразовать этот блок в одну строку с {...}? - PullRequest
1 голос
/ 05 марта 2012

Я создал следующее (это часть кода, но обсуждается только эта строка):

if number_to_test % divisor == 0 then number_of_divisors+= 1 end

Я хотел сократить его до

if number_to_test % divisor == 0 { number_of_divisors+= 1 }

но я получаю

syntax error, unexpected '{', expecting keyword_then or ';' or '\n'
    if number_to_test % divisor == 0 { number_of_divisors+= 1 }
                                      ^
 syntax error, unexpected '}', expecting keyword_end

Я думал, что смогу изменить длинную форму на {}
Можете ли вы сказать мне правильный синтаксис (если это возможно)?
Может быть, я просто думаю о конце блоков, а не о выражениях if?

Ответы [ 3 ]

5 голосов
/ 05 марта 2012

Одна строка if операторов в Ruby выполняется "задом наперед", так сказать:

number_of_divisors += 1 if number_to_test % divisor == 0

Как и следовало ожидать, то же самое работает и с unless.

1 голос
/ 05 марта 2012

Вы можете сделать:

number_of_divisors+= 1 if number_to_test % divisor == 0 
0 голосов
/ 05 марта 2012
number_of_divisors+= 1 if number_to_test % divisor == 0

будет лучше.

Исправлено: у рубина нет ++.

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