Ho appena iniziato l'apprendimento Ruby e Ruby on Rails e mi sono imbattuto il codice di convalida che utilizza gamme:Differenza tra ".." (punto doppio) e "..." (punto triplo) nella generazione dell'intervallo?
validates_inclusion_of :age, :in => 21..99
validates_exclusion_of :age, :in => 0...21, :message => "Sorry, you must be over 21"
In un primo momento ho pensato che la differenza era l'inclusione di punti finali, ma nella documentazione API Ho guardato in , non sembrava importare se fosse ..
o ...
: includeva sempre gli endpoint.
Tuttavia, ho eseguito alcuni test in irb e sembrava indicare che ..
includesse entrambi gli endpoint, mentre ...
includeva solo il limite inferiore ma non quello superiore. È corretto?
Ho programmato il rubino per 8 anni e non l'ho mai saputo. Grazie! –
Esempio migliore/meno confuso di quanto sopra: '(1..10) .include? 10 # => true' e '(1 ... 10) .include? 10 # => false' – timmcliu
@timmcliu Sebbene non sia rilevante per illustrare il punto che '(a..b)! = (A ... (b + 1))' nonostante le loro rappresentazioni di matrice siano uguali (quando a, b ∈ ℤ). Ho aggiornato la mia risposta un po 'per ampliarla. –