2012-01-09 95 views
3

我在嘗試瞭解Range類的cover?方法如何工作時遇到了一些麻煩。封面如何?在這種情況下工作的人物?

從據說文檔:

蓋(VAL)→真或假:如果obj BEG和結束之間,即求< = OBJ < =端(或端獨佔時,則返回true exclude_end?是真的)。

當我這樣做:

test = "A".."X" 

我希望test.cover? "AX"失敗,因爲對象AX對我來說似乎之外的範圍限制。但它返回true。然後,我做的事:test.cover? "XX"並返回

我不明白怎麼AX在該範圍內。一般我相信這是暫時難以看到怎麼蓋?適用於非數字對象。所以我的問題是:對象「AX」是如何在該範圍內,但對象「XX」不是。

+0

曾經有人提起了錯誤報告稱行爲是令人困惑的。 – 2012-01-09 21:11:23

回答

3

考慮在這裏瞎猜,但我猜想這是因爲「AX」談到「A」,所以它的範圍之內,而「XX」來「X」,這將是超出範圍。

檢查中IRB可以看到:

"AX" > "A" && "AX" < "B" => true 
"XX" > "X" => true 
+0

我對於似乎沒有那麼重要的字符串大小感到困惑嗎?方法。謝謝! – Nobita 2012-01-09 19:47:23

+0

''AX'<「B」'這一行有些誤導,因爲'cover?'在它的比較中不會使用「B」。 – 2012-01-09 20:22:55

+0

@GavinMiller:對,#cover?將在A/X上使用> = && <=; 「B」部分只是爲了證明「AX」落在「A」和「B」之間 – RobH 2012-01-09 20:27:41

相關問題