class
è una parola chiave utilizzata per definire una nuova classe. Poiché è una parola chiave riservata, non puoi utilizzarla come nome di variabile. Non puoi usare nessuna delle parole chiave di Ruby come nomi di variabili, quindi non sarai in grado di avere variabili denominate def
o module
o if
o end
, ecc - class
non è diverso.
Ad esempio, considera quanto segue:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
Il tentativo di eseguire questo genera un errore, poiché non è possibile utilizzare class
come nome di variabile.
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
Per risolverlo, useremo klass
invece l'identificatore . Non è speciale, ma è convenzionalmente usato come nome di variabile quando hai a che fare con un nome di classe o classe. È foneticamente lo stesso, ma poiché non è una parola chiave riservata, Ruby non ha problemi con essa.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
L'output, come previsto, è
["method", "inspect", "name", "public_class_method", "chop!"...
È possibile utilizzare qualsiasi nome di variabile (non riservato) lì, ma la comunità ha iniziato a utilizzarlo klass
. Non ha alcuna magia speciale - significa semplicemente "Volevo usare il nome" classe "qui, ma non posso, poiché è una parola chiave riservata".
Una nota a margine, dal momento che l'hai digitato in modo sbagliato alcune volte, vale la pena notare che in Ruby, il caso è importante. I token che iniziano con una lettera maiuscola sono costanti. Tramite il piccone :
Un nome costante inizia con una lettera maiuscola seguita dai caratteri del nome. I nomi delle classi e dei moduli sono costanti e seguono le convenzioni di denominazione delle costanti. Per convenzione, le variabili costanti vengono normalmente scritte utilizzando lettere maiuscole e trattini bassi.
Pertanto, l'ortografia corretta è class
and klass
, anziché Class
e Klass
. Questi ultimi sarebbero costanti, ed entrambi Class
e Klass
sono nomi di costanti validi, ma sconsiglierei di usarli per scopi di chiarezza.