Nome di un simbolo in rubino

0

Sono molto nuovo con Ruby. Devo scrivere un codice in ruby al lavoro e un collega mi ha dato alcuni test che ha scritto in ruby. Ho alcune difficoltà a capire una frase che ha scritto.

Abbiamo una classe come questa:

class Port
    attr_accessor :nature, :name

    def initialize(name)
        @name = name
    end
end

Il test consiste in:

x_port = Port.new("x")
x_port.nature = :sampling
x_port.wont_be_nil
x_port.nature.name.must_equal :sampling

Ho qualche problema a capire l'ultima riga, nature.name . Capisco che stiamo chiedendo il nome del simbolo ma questo metodo non esiste e non posso creare un nome di metodo name a causa del simbolo :name già presente. Qualcuno può illuminarmi su come risolvere questo problema?

Grazie mille

    
posta user3314570 06.06.2016 - 17:48
fonte

1 risposta

1

Scusa ma questo "problema" non ha molto senso. È intenzionalmente confuso o c'è solo una specie di errore di battitura.

È possibile in Ruby aprire una classe e aggiungere nuovi metodi, come

class Symbol
  def name
    self
  end
end

che sostanzialmente consentirebbe a x_port.nature di restituire il suo valore attuale come sembra previsto nei test.

Questo in quanto tale merita di essere studiato. Ma metterlo in un esempio in cui esiste un altro metodo name anche se non direttamente correlato sembra non essere molto intelligente. Quindi o è uno stupido 'trucco' o come detto solo un refuso e il test dovrebbe apparire come

x_port.nature.must_equal :sampling

e quindi ci dovrebbero essere più test eseguiti su x_port.name che è anche definito in parallelo a nature e il suo valore impostato su "x" nell'inizializzatore.

    
risposta data 06.06.2016 - 19:18
fonte

Leggi altre domande sui tag