私はどのようにrange.cover?機能するかを理解しようとしていますが、以下は混乱しているようです-
("as".."at").cover?("ass") # trueと("as".."at").cover?("ate") # falseassこの例を単独で見ると、が前に来て がat続く辞書スタイルで評価されるように見えるため、混乱することはありませんate。("1".."z").cover?(":") # trueこの真実は、辞書スタイルではなく ASCII 値に基づいているようです。辞書では、すべての特殊文字が偶数の数字の前にあると予想され、混乱はここから始まるからです。私が思うことが本当なら
cover?、採用する比較方法、つまりASCII値または辞書ベースのアプローチを使用する方法をどのように決定しますか。そして、範囲は配列でどのように機能しますか。例えば -
([1]..[10]).cover?([9,11,335]) # trueこの例は、私は間違っていると思っていました。
cover?しかし、一見すると、配列を扱う場合、境界値との引数が文字列に変換され、単純な辞書スタイルの比較で true が返されるように見えます。それは正しい解釈ですか?どのようなオブジェクト
Rangeを処理するために装備されていますか? 私はそれが取ることができることを知っていますnumbers(複雑なものを除く), ハンドル,とりわけ値がそれを発生させる間、strings神秘的に動作することができますarraysboolean, nil and hashArgumentError: bad value for range