2. You can define methods for a single instance
a = Array.new
b = Array.new
def a.hello
puts "Hello Devclub!"
end
a.hello
# => "Hello Devclub!"
b.hello
# => NoMethodError: undefined method 'hello' for []:Array
3. Or override a method on a single instance
class Dog
def speak
puts "bark"
end
end
muki = Dog.new
def muki.speak
puts "auh"
end
muki.speak
# => "auh"
puff = Dog.new
puff.speak
# => "bark"
4. Enters the Singleton class
class
puff Dog
class muki super super
muki Dog
Singleton class
muki.singleton_methods
# => ["speak"]
puff.singleton_methods
# => []
5. class A
def self.hello
puts "Hello from class method!"
end
end
A.hello
# => "Hello from class method!"
A.singleton_methods
# => ["hello"]
7. a_meta = class << A; self; end;
puts a_meta
# => #<Class:A>
meta_instance = a_meta.new
# => TypeError: can't create instance of virtual
class
8. Everything in Ruby is an object
1.class
# => Fixnum
nil.class
# => NilClass
NilClass.class
# => Class
Class.class
# => Class
class A
puts self.class
end
# => Class
12. ESTYLE comp
LIF an
AL y
IT
G
DI
We are looking for
the
CA N N E D
Android Developers
AP
S
P
anton@cannedapps.com
Hinweis der Redaktion
\n
2 array instantsi, meetod &#x201C;hello&#x201D; defineeritakse ainult instants &#x201C;a&#x201D;-le\n
Siin on j&#xE4;llegi n&#xE4;ha kuidas &#x201C;muki&#x201D; instantsil defineeritakse &#xFC;le meetod &#x201C;speak&#x201D;\n\nStaatilistest keeltest tulenev l&#xE4;henemine reeglina ette, et on olemas klassid milledel defineeritakse meetodid mida selle klassi objektid kasutada saavad.\n\nKuhu antud juhul &#x201C;muki.speak&#x201D; meetod defineeritakse?\n\nKui see definitsioon tehtaks &#x201C;muki&#x201D; klassile milleks on &#x201C;Dog&#x201D; siis peaks &#x201C;speak&#x201D; meetodi defineerimine laienema ka instantsile &#x201C;puff&#x201D;\n\n\n
muki instantsile luuakse Singleton klass sellel hetkel kui Ruby interpreter n&#xE4;eb vajadust instantsi spetsiifiliseks loogikaks\n
Mis tegelikult juhtub klassi meetodi defineerimisel on see, et see meetod defineeritakse samuti klass A singleton klassi\n\nMiks see nii on?\n\n\n\n\n\n\n\n\n\n
Singleton klassi omadused:\n\n1. N&#xE4;htamatu p&#xE4;rinevuse jadas\n2. Singleton klassi ei saa instantiate&#x2019;ida\n\n\n\n\n\n
Singleton klassi omadused:\n\n1. N&#xE4;htamatu p&#xE4;rinevuse jadas\n2. Singleton klassi ei saa instantiate&#x2019;ida\n\nTODO: show inheritance chain\n\n\n\n
1. Ruby&#x2019;s on k&#xF5;ik objekt\n\n2. Ruby vajab klassimeetodeid kuid toetab ainult instantsimeetodeid.\n\nA on klassi Class subklass. Objekt-orienteeritust silmas pidades peaks objekti A klassimeetod defineeritama tema superklassi. Seda ei saa aga defineerida klassi Class kuna sellisel juhul oleks antud meetod k&#xF5;ikidele objektidele k&#xE4;ttesaadav.\n\nSeega tulenevalt sellest kuidas Ruby method dispatch t&#xF6;&#xF6;tab luuakse objekti A p&#xE4;rinevusejadasse &#x2018;A kus defineeritakse tema klassimeetodid.\n
K&#xF5;ige lihtsam n&#xE4;ide instantsi spetsiifilisest loogikast on Testides meetodite mock&#x2019;imine\n\nLisaks:\nSingleton class on &#xFC;heks talaks mis teeb Ruby&#x2019;st high-level metaprogrammeerimise keele.\nMida see t&#xE4;hendab on see, et see v&#xF5;imaldab koodi kirjutada \nabstraktselt, domeenispetsiifiliselt, lihtsamalt, loogilisemalt\n\n\n\n\n\n
K&#xF5;ige lihtsam n&#xE4;ide instantsi spetsiifilisest loogikast on Testides meetodite mock&#x2019;imine\n\nLisaks:\nSingleton class on &#xFC;heks talaks mis teeb Ruby&#x2019;st high-level metaprogrammeerimise keele.\nMida see t&#xE4;hendab on see, et see v&#xF5;imaldab koodi kirjutada \nabstraktselt, domeenispetsiifiliselt, lihtsamalt, loogilisemalt\n\n\n\n\n\n\n\n\n\n\n
K&#xF5;ige lihtsam n&#xE4;ide instantsi spetsiifilisest loogikast on Testides meetodite mock&#x2019;imine\n\nLisaks:\nSingleton class on &#xFC;heks talaks mis teeb Ruby&#x2019;st high-level metaprogrammeerimise keele.\nMida see t&#xE4;hendab on see, et see v&#xF5;imaldab koodi kirjutada \nabstraktselt, domeenispetsiifiliselt, lihtsamalt, loogilisemalt\n\n\n\n\n\n\n\n\n\n\n