在Ruby中,为什么(+)需要1 + rand(10)

时间:2010-09-24 02:02:20

标签: ruby

rand 10有效,但不是1 + rand 10。为什么必须1 + rand(10)

 > RUBY_DESCRIPTION
 => "ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]" 

 > rand 10
 => 8 

 > (1 + rand 10)
SyntaxError: (irb):15: syntax error, unexpected tINTEGER, expecting keyword_do or '{' or '('
(1 + rand 10)
            ^
 from /Users/peter/.rvm/rubies/ruby-1.9.2-p0/bin/irb:17:in `<main>'

 > 1 + rand 10
SyntaxError: (irb):16: syntax error, unexpected tINTEGER, expecting keyword_do or '{' or '('
 from /Users/peter/.rvm/rubies/ruby-1.9.2-p0/bin/irb:17:in `<main>'

2 个答案:

答案 0 :(得分:4)

1 + rand本身就是一个有效的语句,因此被解析为一个。 10似乎与解析器不合适,因为您刚刚给它一个完整的表达式。它希望运算符或其他东西扩展语句,而不是另一个术语。

我现在感觉不是很清楚,但我认为这是有道理的。正确?

答案 1 :(得分:1)

为了它的价值,你可以做到

1.+ rand 10