Nel libro Cooper Rubino iniziale, pagina 166 c'è un esempio che non riesco a riprodurre.# tra? errore o anomalia in Cooper * Beginning Ruby *
class Song
include Comparable
attr_accessor :length
def <=>(other)
@length <=> other.length
end
def initialize(song_name, length)
@song_name = song_name
@length = length
end
end
a = Song.new('Rock around the clock', 143)
b = Song.new('Bohemian Rhapsody', 544)
c = Song.new('Minute Waltz', 60)
a.between?(b, c)
Nel libro, si dice il risultato dovrebbe essere => true
mentre sto ottenendo => false
.
ho continuato a rompere verso il basso per ...
puts 143.between?(544, 60) # => false
puts 143.between?(60, 544) # => true
E secondo ruby-doc.org, si suppone di essere scritto come between?(min,max)
- il che mi porta a credere
- a) il libro ha un errore
- b) in una versione precedente di Ruby, tra? era più flessibile e permessi
(max,min)
- c) questo esempio è in qualche modo anomalo e sto manca qualcosa
Che è?
... in pratica * a) * ... – ndn
Il libro non dice quale versione di Ruby è basata? Se è così, puoi confrontarlo con DRoc di quella versione. Immagino sia a). – sawa
Ciao! Scritto dall'autore :-) L'ho appena visto nell'edizione del 2009 (edizione 2, l'ultima al momento, anche se l'edizione 3 è prevista per il prossimo anno) e l'esempio lo mostra come tra parentesi (c, b), quindi funziona correttamente Tuttavia, non posso verificare se l'edizione 1 (2007) ha riportato l'errore che stai segnalando fino a quando non sono in ufficio, perché potrei averne una copia lì. :-) L'edizione 2 può essere vista in PDF per http : //no.gd/begruby22.pdf BTW. –