2011-06-20 7 views

cevap

3

Kapsam çözüm işleci (::) sabitleri, örnek yöntemlerini ve sınıf yöntemlerini çözebilir, böylece biz bu operatörü esasen doğru yere baktığımız sürece herhangi bir yöntem için kullanabiliriz.

Ayrıca, "func" yöntemi, A modülünün bir sınıf yöntemi olarak tanımlandığı için (self.func, "statik" bir yönteme benzer şekilde), doğrudan modüle aittir (kendisi bir nesnedir). alıcı olarak modül ile nokta operatörü ile çağrıldı. Yöntem daha sonra sadece üzerinde nokta operatörüyle adlandırılabilir örnek yöntemi olarak tanımlandı ise

aye = Object.new.extend(A) 
aye::funC# raises NoMethodError 
aye.func # raises NoMethodError 

: Bir sınıf yöntemi olduğundan modül A'nın örnekleri, herhangi görünürlük için "işlev" yok unutmayın modülün örnekleri. Yakut postmodern dil olduğu için

module B 
    def func2 
    puts "OK!" 
    end 
end 
B::func2 # raises NoMethodError 
B.func2 # raises NoMethodError 
bee = Object.new.extend(B) 
bee::func2 # "OK!" 
bee.func2 # "OK!" 
+0

@RHSeeger, a şeyler yapmak sadece tek bir şekilde olmak zorunda değildir (ve hatta birden fazla olması daha iyi kabul edilebilir). C, Java ve c'deki gibi minimalist bir dil çekirdeği, Ruby'de gerçekten oyunda değil. –

+0

@Wayne: Yorumu silindi, çünkü asıl sorunun ne olduğunu yanlış anladım. Asıl soru "neden her ikisi de aynı şey olduğu için" olduğunda "farkı nedir" diye okudum. Ben maerics'in cevabını bu kadar açık bir şekilde cevaplamadığından emin değilim, yorumum gerçekten uygun değil. – RHSeeger

+0

Rastgele bir eşgörünüm olarak, "postmodern" in bir programlama dilini etiketlemenin kötü bir yolu olduğu kanaatindeyim. Ruby'yi modern bir programlama dili olarak adlandırırdım. Bu, programlama dili tasarımındaki birçok gelişmeden yararlanmanın hem kullanımı hem de kullanımı kolay bir şey yaratmak için (yani bakımı kolay) yaratması anlamına gelir. Bu söylendiği gibi, Ruby hakkında devrim niteliğinde hiçbir şey yoktur. Dili seviyorum ve diğer dillerden gelen özelliklerin harika bir birleşimi olduğunu düşünüyorum, ancak önceki dillerden bir sıçrama olan masaya getirdiği şeyleri düşünemiyorum. – RHSeeger

İlgili konular