2009-03-12 6 views
1
cash = 100_000.00 
sum = 0 
cash += 1.00, sum while cash < 1_000_000.00 # underscores ignored 

Я нашел приведенный выше пример в книге «Изучение Рубин», но с использованием 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

это ошибка. Об этом есть unconfirmed error report, но ничего в official errata (которые не были обновлены с 16 октября 2007 года).

+0

Черт. Ты в порядке. – 2009-03-12 19:21:19

0

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

0

Возможно, это опечатка или опечатка с запятой (?)?

2

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

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

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

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

cash += 1.00 while cash < 1_000_000.00 
0

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

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

cash = 100_000.00 
sum = 0 

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

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

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