Зачем нужна запятая в этом примере кода? - PullRequest
1 голос
/ 12 марта 2009
cash = 100_000.00
sum = 0
cash += 1.00, sum while cash < 1_000_000.00 # underscores ignored

Я нашел приведенный выше пример в книге "Изучение Ruby", но с использованием Ruby 1.9 он не компилируется ("интерпретировать"?)

syntax error, unexpected ',', expecting $end

Что запятая должна делать после 1.00?

Вот полный контекст примера:

#Also, like if, you can use while as a statement modifier, at the end of a statement:
cash = 100_000.00
sum = 0
cash += 1.00, sum while cash < 1_000_000.00 # underscores ignored
#So cash just keeps adding up until it equals $1,000,000.00. I like that!

Ответы [ 5 ]

5 голосов
/ 12 марта 2009

Это ошибка. Об этом есть неподтвержденное сообщение об ошибке , но в официальных сообщениях об ошибках ничего нет (которые не обновлялись с 16 октября 2007 г.)

2 голосов
/ 12 марта 2009

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

вы можете использовать следующим образом, что может помочь объяснить цель.

i = 0
puts i +=1 while i < 10

Что означает, что этот код будет иметь смысл

cash += 1.00 while cash < 1_000_000.00
0 голосов
/ 12 марта 2009

Полный контекст выглядит следующим образом:

Также, например, если вы можете использовать while в качестве модификатора оператора, в конце заявление:

cash = 100_000.00
sum = 0

cash += 1.00, sum while cash < 1_000_000.00 # underscores ignored

Таким образом, наличные продолжают накапливаться, пока не станут равными 1 000 000,00 долларов США. Мне это нравится!

Здесь, очевидно, есть хотя бы одна ошибка. Я предполагаю, что автор случайно использовал запятую в стиле Perl или C, а затем удалил только часть оскорбительного оператора.

0 голосов
/ 12 марта 2009

Может быть, это точка с запятой или опечатка (;)?

0 голосов
/ 12 марта 2009

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

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