class
yeni bir sınıfı tanımlamak için kullanılan bir anahtar kelimedir. Ayrılmış bir anahtar kelime olduğu için, onu değişken adı olarak kullanamazsınız. Ruby'nin anahtar kelimelerinden herhangi birini değişken adları olarak kullanamazsınız, bu nedenle def
veya module
veya if
veya end
vb. Adlı değişkenlere sahip olamazsınız - class
farklı değildir.
Örneğin, şunları düşünün:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
class
Değişken adı olarak kullanamayacağınız için bunu çalıştırmaya çalışmak bir hatayla sonuçlanır .
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
Düzeltmek için klass
bunun yerine tanımlayıcıyı kullanacağız . Özel değildir, ancak bir sınıf veya sınıf adıyla uğraşırken geleneksel olarak değişken adı olarak kullanılır. Fonetik olarak aynıdır, ancak ayrılmış bir anahtar kelime olmadığı için Ruby'de herhangi bir sorun yoktur.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
Beklendiği gibi çıktı
["method", "inspect", "name", "public_class_method", "chop!"...
Orada herhangi bir (ayrılmamış) değişken adı kullanabilirsiniz, ancak topluluk kullanmaya başladı klass
. Özel bir sihri yoktur - sadece "Burada 'sınıf' adını kullanmak istedim, ancak ayrılmış bir anahtar kelime olduğu için yapamıyorum" anlamına gelir.
Bir yan not olarak, birkaç kez yanlış yazdığınız için, Ruby'de durum önemlidir. Büyük harfle başlayan simgeler sabitlerdir. Via kazma :
Sabit bir ad, büyük harfle başlar ve ardından ad karakterleri gelir. Sınıf adları ve modül adları sabittir ve sabit adlandırma kurallarına uyar. Geleneksel olarak, sabit değişkenler normalde baştan sona büyük harfler ve alt çizgiler kullanılarak yazılır.
Bu nedenle, doğru yazım, class
ve klass
yerine Class
ve şeklindedir Klass
. İkincisi sabitler olmak ve her iki ediyorum Class
ve Klass
geçerli sabit isimleri vardır, ama netlik amacıyla kullanılmasının karşı öneriyoruz.