Ruby – classi e oggetti V

r6Polimorfismo

Negli oggetti polimorfismo si riferisce a quei metodi che possono operare con diversi tipi di dati, per esempio l’operatore +

p0

applicato a stringhe le concatena, con i numeri li somma.

Lo stesso capita con *

p1

Comportamento ancora diverso per il metodo length:

p2

per la stringa ritorna il numero di caratteri, per l’array il numero di elementi. Cioè in Ruby i metodi si comportano in funzione dei tipi di oggetto cui sono riferiti, come nel mondo reale.

Costanti di classe

In Ruby possiamo avere costanti contenute in una classe, esempio (cc.rb):

#!/usr/bin/ruby
# encoding: UTF-8

# cc.rb

class Qualcosa
    Cost = 42

    #altri metodi della classe
end

puts Qualcosa::Cost

cc

Come si vede per accedere alla costante contenuta nella classe useremo nome_classe::nome_costante. Se tentassimo di usare la solita sintassi otterremmo un errore, esempio (errcc.rb):

#!/usr/bin/ruby
# encoding: UTF-8

# errcc.rb

# ATTENZIONE: CODICE ERRATO

class Qualcosa
    Cost = 42

    #altri metodi della classe
end

s = Qualcosa.new #oggetto di tipo Qualcosa
puts s.Cost

errcc

Si può risolvere quest’errore definendo un metodo che restituisce la costante; questo metodo può avere lo stesso nome (cosa che personalmente mi piace poco). Ecco okcc.rb:

#!/usr/bin/ruby
# encoding: UTF-8

# okcc.rb

class Qualcosa
    Cost = 42

    def Cost
        Cost
    end
end

s = Qualcosa.new #oggetto di tipo Qualcosa
puts s.Cost #chiama il metodo, quindi è OK

okcc

In alternativa è sempre possibile usare l’operatore ::, come visto sopra. La mia versione preferita.

Pausa perché la prossima volta argomento completamente nuovo 😉

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: