1. ホーム
  2. ruby

[解決済み] ...』の違い (ダブルドット) と '...' の違い?(トリプルドット)の違いについて教えてください。

2022-07-12 10:04:07

質問

RubyとRuby on Railsを学び始めたところ、範囲を使用する検証コードに出会いました。

validates_inclusion_of :age, :in => 21..99
validates_exclusion_of :age, :in => 0...21, :message => "Sorry, you must be over 21"

最初はエンドポイントの入れ方の違いかと思ったのですが、調べたAPIドキュメントでは、どうやら .. なのか ... というように、常にエンドポイントを含んでいました。

しかし、irbでテストをしてみたところ、どうやら .. は両方のエンドポイントを含んでいるのに対し ... は下限だけを含み、上限は含まなかった。これは正しいのでしょうか?

どのように解決するのですか?

この のドキュメントは、Range にはこのように書かれています。

で構成される範囲 .. を使って作られた範囲は、最初から最後までを含みます。また ... を使用して作成されたものは、終了値を除外します。

そこで a..ba <= x <= b のようなもので、一方 a...ba <= x < b .


なお to_a は整数のコレクションを与えますが、Rangeは ではなく でなく、単に開始と終了の値の組です。

(1..5).include?(5)           #=> true
(1...5).include?(5)          #=> false

(1..4).include?(4.1)         #=> false
(1...5).include?(4.1)        #=> true
(1..4).to_a == (1...5).to_a  #=> true
(1..4) == (1...5)            #=> false



以前は、docs はこれを含まず、代わりに Pickaxe の Ranges のセクション . MarkAmery のおかげで ( を参照してください。 ) がこの更新を指摘してくれました。