Cosa rappresenta klass?

Leggendo http://it.asciicasts.com/episodes/197-nested-model-form-parte-2
mi sono imbattuto in questo codice:

new_object =
f.object.class.reflect_on_association(association).klass.new

Intanto ho scoperto il metodo reflect_on_association, che ho visto per
la prima volta :slight_smile: pero’ non ho capito cosa rappresenta il metodo
klass.
Io conoscevo class.

class una keyword di linguaggio in ruby, quindi non pu essere
utilizzata come nome di metodo. lo “standard” scelto per chiamare un
metodo che ritorni una classe spesso klass.

2011/7/1 Stefano V. [email protected]:

class una keyword di linguaggio in ruby, quindi non pu essere utilizzata
come nome di metodo.

a=[]
a.class, non sto chiamando cosi’ il metodo class su a?

scusami, ho risposto con troppa veemenza senza pensare a cosa dicevo :slight_smile:

.class un metodo gi definito in Object
(http://www.ruby-doc.org/core/classes/Object.html), quindi gi
presente su tutti gli oggetti.

in quel caso, volevano un metodo che ritornasse una classe, ma
ovviamente “class” era gi un metodo occupato e non bello ridefinirlo.
da qui il nome “klass”, per restituire una seconda classe, interessante
per quell’oggetto.

Provo cos:

Activity.reflect_on_association(:activity_documents).class # -->
ActiveRecord::Reflection::AssociationReflection

Activity.reflect_on_association(:activity_documents).klass # -->
ActivityDocument

Il primo metodo, “class”, di Object e ritorna la classe dell’oggetto
che viene restituito dal metodo “reflect_on_association”. In questo
caso, ActiveRecord::Reflection::AssociationReflection.

Il secondo metodo, “klass”, di
ActiveRecord::Reflection::AssociationReflection, e ritorna la classe
relativa alla relazione :activity_documents sul modello Activity, in
questo caso ActivityDocument.

2011/7/1 Stefano V. [email protected]:

scusami, ho risposto con troppa veemenza senza pensare a cosa dicevo :slight_smile:

.class un metodo gi definito in Object
(http://www.ruby-doc.org/core/classes/Object.html), quindi gi presente su
tutti gli oggetti.

in quel caso, volevano un metodo che ritornasse una classe, ma ovviamente
“class” era gi un metodo occupato e non bello ridefinirlo. da qui il nome
“klass”, per restituire una seconda classe, interessante per quell’oggetto.

A dire la verita’ non ho capito :slight_smile:

2011/7/1 Stefano V. [email protected]:

ActiveRecord::Reflection::AssociationReflection.

Il secondo metodo, “klass”, di
ActiveRecord::Reflection::AssociationReflection, e ritorna la classe
relativa alla relazione :activity_documents sul modello Activity, in questo
caso ActivityDocument.

:slight_smile: Grazie mille.