2011-11-12 89 views
3
a = [2,4,5] 
a.count-1 => 2 
a.count - 1 => 2 

Ruby中的空間規則是什麼?

a.count -1 => 0 

是什麼原因導致這種行爲?如果a是整數(而不是數組),爲什麼不會發生?

此外,我注意到方法名稱和後面的括號(對於參數)之間不能有空格。這是爲什麼?

紅寶石1.9.2

回答

6

因爲方法可以與沒有括號被調用,此:

a.count - 1 

均值減去1從a.count,而

a.count -1 # is like a.count(-1) 

意味着調用方法a.count作爲參數的是-1。當a是一個整數時不會發生,因爲整數沒有count方法。你只需要小心,因爲你鍵入。

+2

值得一提的是,在'a.count -1'的情況下,'-'仍然是一種方法。看到這裏:http://www.rubyinside.com/rubys-unary-operators-and-how-to-redefine-their-functionality-5610.html –

1
a.count - 1 # you are subtracting 
a.count -1 # you are doing a.count(-1) 

你確定你不能在方法名和parens之間放一個空格嗎?我剛剛在紅寶石1.9.2中做到了,它工作正常。例如,

a.product([3]) 
a.product ([3]) 
1

a.count -1相當於a.count(-1)

它返回-1包含在你的數組中的次數。

a = [-1, 3, 4] 
a.count -1 => 1