Hali,
el tudna nekem valaki magyarazni mi a kulonbseg e ketto kozott:
class Valami
def func
nil
end
def self.func2
nil
end
end
es hogy az alabbi mert nem mukodik, bar feltetelezem a fenti kulonbseg miatt:
class Module
def define_attribute(*symbols)
symbols.each do |symbol|
module_eval( "def self.#{symbol}(val = nil) val ? @#{symbol} = val : @#{symbol}; end" )
module_eval( "def #{symbol}() @#{symbol}; end" )
end
end
end
class Token
define_attribute :string, :argno, :arg0, :arg1
end
class Mov < Token
string 'mov'
argno 2
arg0 :register
arg1 :register
end
m = Mov.new
puts " --- #{m.string} ---"
Koszi
- 1337 megtekintés
Hozzászólások
nem is ertem mit akarsz csinalni
ha csak egy sima attributomot arra ott van az attr_accessor
meg tudod te is irni de akkor
a module_eval ban: def valtozonev=(ertek) es def valtozonev
et kell raknod
a def self.func az osztaly tipushoz tartozik
mig a def func az abbol kepzett instance-hoz
- A hozzászóláshoz be kell jelentkezni
Amit meg mindig nem ertek, a fenti kod az irja ki hogy : --- ---. Miert? Azt varnam hogy --- mov ---.
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.
- A hozzászóláshoz be kell jelentkezni
ruby magick :)
jol gondolod a self miatt nem mukodik
nezd, ket objektum van amit te egynek nezel
az egyik az ami leirja a Mov ot, hogy milyen metodusai vannak, ezt ered el a self el, vagy kivulrol a Mov. -al
-ennek az objektumnak a tipusa Class (p Mov.class)
-itt nem szoktak instance variable eket hasznalni, bar lehetseges
-kevesbe dinamikus nyelvekben ilyen objektum nincs csak maximum a fordito belsejeben mikozben fordit
a masik pedig egy Mov tipusu objektum az instance, ezt csak new utan ered el mert akkor jon letre
-ennek tipusa Mov (p m.class)
a @ az az instance variable-t jelenti tehat az adott instance-hoz tartozo adat
a fenti esetben te a self.string ben adtal egy @string = 'mov' ot
ezt a Mov.string-el tudod elerni utana kivulrol
talan meg segit ez is:
p Mov.instance_variables
p m.instance_variables
kicsit keszekusza lett ez a magyarazat de remelem dereng mar valami
- A hozzászóláshoz be kell jelentkezni
Ertem. Nagyon koszonom a valaszt.
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.
- A hozzászóláshoz be kell jelentkezni
lasd kivel van dolgod megirtam ugy hogy mukodjon is
class Module
def define_attribute(*symbols)
symbols.each do |symbol|
module_eval( "def #{symbol}(val = nil) val ? @#{symbol} = val : @#{symbol}; end" )
end
end
end
class Token
define_attribute :string, :argno, :arg0, :arg1
end
class Mov < Token
def initialize
string 'mov'
argno 2
arg0 :register
arg1 :register
end
end
m = Mov.new
puts " --- #{m.string} ---"
- A hozzászóláshoz be kell jelentkezni
Megegyszer kosz.
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.
- A hozzászóláshoz be kell jelentkezni
a def self.func az osztaly tipushoz tartozik
mig a def func az abbol kepzett instance-hoz
Ezt nagyon-nagyon csunyan ugy szokjak mondani, hogy a self.func az statikus metodust csinal (es igazabol nem is a pont hanem a :: operatorral illene hasznalni) a masik pedig rendes osztalymetodust csinal. Annyi a difi asszem, hogy a statikus metodusbol itt meg lehet hivni a peldanymetodusokat is, csak a peldanyvaltozokban torteno valtozasok eltunnek a balfeneken, mivel nincs peldany.
Tudom, hogy a ruby terminologia kisse mas, de vannak akik igy jobban megertik.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
a statikus metodus standard OOP kifejezes, mint ahogy az osztalymetodus is. ha ott mas a terminologia, hat...
mindig tudtam, hogy a ruby nagyon gaz, dehat erre a kodra ranezve is broaf :)
- A hozzászóláshoz be kell jelentkezni
Tudom, hogy oop kifejezes, a ruby is az, csak a terminologia nem ugyanaz.
kod: Hat nem tudom, en a c++ kodoktol tudok neha futni egy kort... Nekem a ruby kod sokkal jobban attekintheto.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Lattal mar template metaprogramming ot?
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.
- A hozzászóláshoz be kell jelentkezni