2012-06-20 4 views
13
list1 == list2 

per fare il controllo di cui sopra, sarà Scala scorrere entrambe le liste e la chiamata è uguale su ogni coppia di elementi?Come funziona il metodo uguale di Scala nel caso di un elenco?

(ne sono certo, questa domanda è stato chiesto prima, ma non sono riuscito a trovare una buona risposta con Google & Co)

+0

Hai guardato il codice? Scala è open source. –

+0

hai provato a eseguirlo? –

+2

@Tyler: Sì, ma non sono riuscito a trovare il codice corretto del codice, poiché List estende molte altre classi. –

risposta

24

È possibile trovare questo fuori voi stessi per qualsiasi metodo, cercando al scaladoc e scoprire dove è definito, e quindi guardando la fonte. Se inizi con lo online docs, puoi fare tutto questo semplicemente facendo clic: vai al metodo, aprilo facendo clic sulla freccia a sinistra e vedrai un elenco di classi di sostituzione. Vai al primo e guarda la fonte.

Comunque, in questo caso, GenSeqLike, un supertrait di List e molte altre raccolte, definisce equals come controllo canEqual seguito da sameElements. A sua volta, sameElements controlla se entrambi gli argomenti sono LinearSeq s, e se è così, chiama uguale su ogni coppia di elementi dividendo la testa e la coda uno alla volta. In caso contrario, per impostazione predefinita utilizza gli iteratori, chiamando hasNext su ciascuno e quindi confrontando gli elementi con equals.

Quindi, per farla breve: sì, chiama è pari, in ogni coppia di elementi (arresto non appena rileva una mancata corrispondenza).

+3

Perfetto, grazie mille. Questo ha aiutato molto (anche per ricerche future). –

Problemi correlati