Tridy samozrejmne nejsou vsechny instanci Metaclass a navic rozhodne neni pravda, ze se vsechny chovaji stejne, napriklad se da predpokladat, ze kazda metatrida implementuje metodu #new nejak jinak. Ve skutecnosti je to tak, ze ke kazde tride Foo jeste existuje specialni trida jejiz jedinou instanci je Foo, pristupna obvykle pouze jako „Foo class“, a az tato trida (ktera je potomkem krome jineho Object class a Class) je instanci Metaclass. Uvedenou metodu #new bych hledal spise na instancni strane Metaclass nez tridni (uz jenom kvuli tomu thisClass).
Shrnu to
objekt
– př.: 1
– instance třídy
třída
– př.: 1 class = SmallInteger
– definuje chování objektů (inst. část v Browseru)
– instance metatřídy
metatřída
– př.: 1 class class = SmallInteger class
– definuje chování třídy (class část v Browseru)
– instance Metaclass
Metaclass
– př: 1 class class class = Metaclass
– definuje chování metatřídy (inst. část v Browseru pro třídu Metaclass)
– třída metatřídy
metatřída Metaclass
– př: 1 class class class class = Metaclass class
– definuje chování třídy Metaclass (class část v Browseru pro třídu Metaclass)
metatřída metatřídy Metaclass
– 1 class class class class class = Metaclass
– zacyklení
Pavel si neuvědomil, že metatřída není Metaclass, ale instance Metaclass
V první kapitole by „V tomto případě se jejich deklarace vkládá až za seznam výrazů“ mělo být „…za seznam argumentů“.
Jinak pěkný seriál. Jenom trochu polemizuji, zda je cílen spíše na učitele, kteří vybírají vhodný jazyk pro své studenty (s různou pokročilostí a věkem), a nebo přímo na studenty, kteří si chtějí výuku programování zpestřit.