Właśnie zacząłem uczyć się Ruby i Ruby on Rails i natknąłem się na kod walidacyjny, który używa zakresów:
validates_inclusion_of :age, :in => 21..99
validates_exclusion_of :age, :in => 0...21, :message => "Sorry, you must be over 21"
Na początku myślałem, że różnica polega na włączeniu punktów końcowych, ale w dokumentacji API, którą sprawdziłem, nie miało znaczenia, czy tak jest, ..
czy ...
: zawsze zawierał punkty końcowe.
Jednak przeprowadziłem kilka testów w irb i wydawało się, że wskazuje to na ..
oba punkty końcowe, podczas gdy ...
tylko dolną granicę, ale nie górną. Czy to jest poprawne?
(1..10).include? 10 #=> true
i(1...10).include? 10 #=> false