2012-01-09 3 views
3

Rangeクラスのメソッドcover?がどのように機能するかを理解しようとすると、いくつか問題が発生しています。それは言われているドキュメントからどのようにカバーですか?この場合文字で作業しますか?

カバー(val)で真または偽→:?trueを返しobjがBEGと端部との間にある場合、すなわちBEG < = OBJ < =エンド(または終了排他ときexclude_end?は真です)。私はこれを行うと

は:

test = "A".."X" 

は、私は、オブジェクトが私にAXその範囲の範囲外であると思われるので、test.cover? "AX"が失敗することを期待します。しかし、それは真のを返します。 test.cover? "XX"をし、それが偽を返し

AXは、その範囲内でどのように私は見ていないと、一般的に、私はどのようにカバー見えにくい中であると考えている。そして、私がやりますか?は、数値でないオブジェクトに対して機能します。だから私の質問は:オブジェクト "AX"はその範囲にありますが、オブジェクト "XX"はそうではありません。

+0

誰かが一度行動が混乱だったと言ってバグレポートを提出しました。 –

答えて

3

ここに暗闇の中でショットを取るが、「XX」が来ている間、私は、「AX」は範囲内後に「A」ので、それを来るので、それがあると仮定していだろう「X」の後に範囲外です。 IRBのチェックイン

あなたが見ることができます:

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

私は、カバーでその重要性を持たないと思われる文字列のサイズについて混乱しましたか?方法。ありがとう! – Nobita

+0

'' AX "<" B "'行は、 '' cover? 'は比較の際に "B"を使用しないので、少し誤解を招きます。 –

+0

@ GavinMiller:Correct、#cover? => && <=をA/Xで使用します。 「B」セクションは、「AX」が「A」と「B」との間に入ることを証明するのに役立つだけであった。 – RobH

関連する問題