sınıf << Ruby kendini deyim
class << self
Ruby ne yapar?
CEVAP
İlk olarak, class << foo
sözdizimi açılıyor foo
'In singleton sınıfı (eigenclass). Bu yöntem, belirli bir nesne denilen davranışı uzmanlaşma olanağı sağlar.
a = 'foo'
class << a
def inspect
'"bar"'
end
end
a.inspect # => "bar"
a = 'foo' # new object, new singleton class
a.inspect # => "foo"
Şimdi, soruma cevap ver: class << self
açılır self
'In tek sınıf, yöntemleri olabilir yeniden için geçerli self
nesne (hangi içinde bir sınıf veya modülü gövde sınıf veya modülükendisi). Genellikle, bu sınıf/modül tanımlamak için kullanılır ("") statik yöntemler:
class String
class << self
def value_of obj
obj.to_s
end
end
end
String.value_of 42 # => "42"
Bu da bir kısaltma olarak yazılabilir:
class String
def self.value_of obj
obj.to_s
end
end
Hatta daha kısa
def String.value_of obj
obj.to_s
end
İçinde bir işlev tanımı, self
nesne anlamına gelir zaman fonksiyonu denir. Bu durumda, class << self
bu nesnenin singleton sınıfı açılır; o birini kullanın zavallı bir adamın durumu makine uygulamak için:
class StateMachineExample
def process obj
process_hook obj
end
private
def process_state_1 obj
# ...
class << self
alias process_hook process_state_2
end
end
def process_state_2 obj
# ...
class << self
alias process_hook process_state_1
end
end
# Set up initial state
alias process_hook process_state_1
end
Yani, yukarıdaki örnekte, her örnek StateMachineExample
process_hook
takma ad process_state_1
ama unutmayın ne kadar yıl geçtikten sonra, yeniden process_hook
(self
sadece, değil etkileyen diğer StateMachineExample
örnekleri) process_state_2
. Bu yüzden, her zaman bir arayan process
yöntemi redefinable process_hook
çağırır), davranış değişiklikleri ne bağlı olarak çağırır.
() sınıf vs türü() Ruby...
Örnek değişken Ruby sınıfa karşı sınıf...
Nasıl bir sınıf zaten Ruby olup olmadı...
Nasıl ruby string Adı Sınıf bir örnek ...
Ruby sınıf türleri ve case ifadeleri...