classyeni 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 defveya moduleveya ifveya endvb. Adlı değişkenlere sahip olamazsınız - classfarklı değildir.
Örneğin, şunları düşünün:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
classDeğ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 klassbunun 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, classve klassyerine Classve şeklindedir Klass. İkincisi sabitler olmak ve her iki ediyorum Classve Klassgeçerli sabit isimleri vardır, ama netlik amacıyla kullanılmasının karşı öneriyoruz.