Complex={
}
function Complex:new() -- Complex.new(self) és a Complex:new() ugyanazt jelenti
o = {}
setmetatable(o, self)
self.__index = self
return o
end
function Complex:set(r,i)
self.r = r
self.i = i
end
function Complex:dump()
print("r: "..self.r, "i:"..self.r)
end
function Complex:getr()
return self.r
end
function Complex:geti()
return self.i
end
function Complex:add(c2)
o = self:new()
o:set(self:getr() + c2:getr() , self:geti() + c2:geti())
return o
end
a = Complex:new()
b = Complex:new()
a:set(3,4)
a:dump()
b:set(4,5)
b:dump()
c=a:add(b)
c:dump() -- r: 7 i: 9
-- Operator Overload (update) --
Complex.__add=Complex.add -- mivel a setmetable-lel korábban saját magát állítottam be
-- metatáblának így egyszerűen az __add mezőbe másolom az összeadás függvényt
d = b + c -- r: 11 i: 14
d:dump()
- foofighter blogja
- A hozzászóláshoz be kell jelentkezni
- 718 megtekintés
Hozzászólások
Operator overload nincs?
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Operator overload lua-ban:
a és b: complex objektum
Akkor van arra lehetőség, hogy c = a + b létrehozza a kettő összegét egy új objektumba.
- A hozzászóláshoz be kell jelentkezni
Vagyis akkor van. Miert nem ugy oldottad meg? (Feltetelezem, hogy ehhez a objektum kodjaba kell tamogato kod).
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Frissítettem a posztot ott le van írva a megoldás
- A hozzászóláshoz be kell jelentkezni
Ez biztos csak nekem erdekes megoldas, de hat en nem is ismerem a Lua-t, szoval az en velemenyem keveset nyom a latban. Mindenesetre... furcsa. Gondolom a Lua alapvetoen azert nem teljesen objektumorientalt...
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni