¿Cuál es la diferencia entre Class y Klass?¿Cuál es la diferencia entre Class y Klass en ruby?
Respuesta
class
es una palabra clave utilizada para definir una nueva clase. Como es una palabra clave reservada, no puede usarla como nombre de variable. No puede usar ninguna de las palabras clave de Ruby como nombres de variable, por lo que no podrá tener variables llamadas def
o module
o if
o end
, etc. - class
no es diferente.
Por ejemplo, considere lo siguiente:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
Intentar ejecutar esto resulta en un error, ya que no puede utilizar class
como nombre de variable.
test.rb:1: syntax error, unexpected kCLASS, expecting ')'
def show_methods(class)
^
test.rb:2: syntax error, unexpected ')'
puts Object.const_get(class).methods.inspect
solucionarlo, vamos a utilizar el identificador klass
lugar. No es especial, pero se usa convencionalmente como nombre de variable cuando se trata de un nombre de clase o clase. Es fonéticamente lo mismo, pero como no es una palabra reservada, Ruby no tiene problemas.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
de salida, como se esperaba, es
["method", "inspect", "name", "public_class_method", "chop!"...
usted podría utilizar cualquier nombre (no reservado) variable de allí, pero la comunidad ha llevado usar klass
. No tiene ninguna magia especial, solo significa "Quería usar el nombre 'clase' aquí, pero no puedo, ya que es una palabra clave reservada".
En una nota lateral, ya que lo ha escrito incorrectamente un par de veces, vale la pena señalar que en Ruby, el caso es importante. Los tokens que comienzan con una letra mayúscula son constantes. A través de Pickaxe:
Un nombre de constante comienza con una letra mayúscula seguida de los caracteres del nombre. Los nombres de clase y los nombres de módulo son constantes y siguen las convenciones de nomenclatura constantes. Por convención, las variables constantes se escriben normalmente con letras mayúsculas y guiones bajos en todas partes.
Por lo tanto, la escritura correcta es class
y klass
, en lugar de Class
y Klass
. Las últimas serían constantes, y tanto Class
como Klass
son nombres constantes válidos, pero recomendaría no usarlos para mayor claridad.
¡Bien, no solo 'Clase 'en particular es un nombre constante válido, también es uno existente! (es la clase Class) – Ashe
Guau, hermosa. Comprende completamente ahora. Gracias Chris! :) – s84
Creo que el uso de 'klass' como una variable local proviene del Pico - usaron ese nombre en un par de ejemplos, exactamente por las razones que describiste aquí. –
Uno es el nombre de una clase y el otro es solo una constante indefinida por defecto. Y para el par es más probable que vea, class
y klass
, el primero es una palabra clave para definir clases mientras que el último es solo un identificador (como cualquier otra cadena de caracteres). Se usa cuando le gustaría escribir la palabra "clase" pero no porque es una palabra clave reservada.
¿Cuál es el punto, me refiero a por qué/cómo lo uso, para qué se usa habitualmente? – s84
@Sam class es una palabra clave reservada para definir clases. Entonces, si quiere tratar algo con una clase genérica (como metaprogramación), no puede escribir 'class = Kernel.const_get (class_name)'. Pero puede escribir 'klass = Kernel.const_get (class_name)', y eso se usa para representar "clase". –
El punto es que no puede usar la palabra clave 'clase' para significar 'clase' ... porque es una palabra reservada (lógica circular, lo sé) por lo que la palabra 'klass' se sustituye en su lugar. Esta es una expresión común en muchos otros idiomas, p. Java y C#. – Scott
klass
y clazz
y clasz
y similares son faltas de ortografía creativas utilizadas para evitar una palabra reservada class
.
Sería mucho menos desagradable para los ojos utilizar class1
o cl
o classX
o algo así como una falta de ortografía intencional.
Creo que klass
es también un Rails (o más bien ActiveRecord) method. Se usa para obtener la clase de una asociación.
- 1. ¿cuál es la diferencia entre ".class element" y "element.class"?
- 2. ¿Cuál es la diferencia entre @class y import
- 3. Cuál es la diferencia entre Class Path y Build Path
- 4. iPhone SDK: ¿cuál es la diferencia entre #import y @class?
- 5. ¿Cuál es la diferencia entre los archivos .class y .dex?
- 6. ¿Cuál es la diferencia entre incluir y extender en Ruby?
- 7. ¿Cuál es la diferencia entre Ruby y Ruby on Rails?
- 8. ¿Cuál es la diferencia entre STDIN y $ stdin en Ruby?
- 9. ¿Cuál es la diferencia entre require_relative y require en Ruby?
- 10. ¿cuál es la diferencia entre salir y salir? en ruby?
- 11. ¿Cuál es la diferencia entre% Q y% {} en ruby?
- 12. ¿Cuál es la diferencia entre include y require en Ruby?
- 13. ¿Cuál es la diferencia entre Object y BasicObject en Ruby?
- 14. ¿Cuál es la diferencia entre Rack y Rails Metal (Ruby)?
- 15. ¿Cuál es la diferencia entre Ruby on Rails y Grails?
- 16. ¿Cuál es la diferencia entre # import y @class, y cuándo debo usar uno sobre el otro?
- 17. ¿Cuál es la diferencia entre + = y = +?
- 18. ¿cuál es la diferencia entre:.! y: r !?
- 19. ¿Cuál es la diferencia entre ".equals" y "=="?
- 20. Cuál es la diferencia entre $ y jQuery
- 21. Cuál es la diferencia entre = y: =
- 22. Cuál es la diferencia entre $ (...) y `...`
- 23. ¿Cuál es la diferencia entre dict() y {}?
- 24. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 25. ¿Cuál es la diferencia entre {0} y ""?
- 26. ¿Cuál es la diferencia entre .ToString (+) y ""
- 27. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 28. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 29. ¿Cuál es la diferencia entre " " y ""?
- 30. ¿Cuál es la diferencia de enunciado y expresión en Ruby?
¿Dónde viste esto último? –
He visto Klass en más de un lugar. Recientemente cuando se investiga singletons – s84
'klass' se usa comúnmente para nombrar una variable que contiene un objeto' Class' (recuerde que las clases también son objetos), como en 'klass = String'. ¿Puedes proporcionar la fuente de dónde lo has visto para obtener una explicación más profunda? – Chubas