这个代码示例中的逗号是什么?

时间:2009-03-12 19:00:21

标签: ruby syntax

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 个答案:

答案 0 :(得分:5)

这是一个错误。关于它有unconfirmed error report,但official errata中没有任何内容(自2007年10月16日以来尚未更新)。

答案 1 :(得分:2)

它最有可能是分号,但代码仍然是错误的。我觉得有一些背景缺失。作者用sum做了什么?

您可以通过以下方式使用,这可能有助于解释意图。

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

这意味着此代码有意义

cash += 1.00 while cash < 1_000_000.00

答案 2 :(得分:0)

嗯,这不会是第一本也不是最后一本在代码中出现明显错误的编程书。

答案 3 :(得分:0)

也许这是一个错误或错误的分号(;)?

答案 4 :(得分:0)

完整的上下文如下:

  

另外,就像if一样,你可以使用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风格的逗号运算符,然后只删除了部分违规语句。