Perché questi due equivalenti?Perché è (10..20) .last uguale a (10 ... 20) .last
(10..20).last #=> 20
(10...20).last #=> 20
Questo suona come un duplicato di Ruby 'Range.last' does not give the last value. Why?, ma le risposte a questa domanda semplicemente dire che è in base alla progettazione. Perché è progettato in questo modo? Qual è lo scopo di ..
e ...
restituendo gli stessi valori per last
quando tutto il resto è diverso?
OK, la risposta a questo semplicemente afferma, questo è di progettazione. Quindi la mia domanda allora e aggiornerò questo sopra, PERCHÉ è questo in base alla progettazione? Perché questo è incoerente? –
Non è incoerente. ultimo restituisce l'ultimo oggetto nell'intervallo. In entrambi i casi l'inizio dell'intervallo è 10 e l'ultimo è 20. Quello che vuoi veramente è (10 ... 20) .max # => 19 .last e .last (count) sono metodi diversi e comportarsi in modo diverso –
Non pensare a (1..3) come a creare una serie di numeri da 1 a 3, pensala come creando un oggetto Range a partire da 1 e terminando a 3 con un comportamento inclusivo. Quindi (1 ... 3) è lo stesso oggetto con comportamento esclusivo alla fine. Entrambi hanno lo stesso valore, solo un comportamento diverso. –