Код IT
← Каталог

Объектно-ориентированное программирование в Lua — Полиморфизм

Фрагмент из «Объектно-ориентированное программирование в Lua»: Полиморфизм.

Lua main.lua
local Button = {}

function Button:new(label)
    local button = setmetatable({}, {__index = self})
    button.label = label
    button.action = function() print("Нажата кнопка: " .. label) end
    return button
end

function Button:setAction(fn)
    self.action = fn
end

local btn1 = Button:new("OK")
local btn2 = Button:new("Cancel")

btn2:setAction(function() print("Отмена действия") end)

btn1.action() -- Нажата кнопка: OK
btn2.action() -- Отмена действия
local Button = {}

function Button:new(label)
    local button = setmetatable({}, {__index = self})
    button.label = label
    button.action = function() print("Нажата кнопка: " .. label) end
    return button
end

function Button:setAction(fn)
    self.action = fn
end

local btn1 = Button:new("OK")
local btn2 = Button:new("Cancel")

btn2:setAction(function() print("Отмена действия") end)

btn1.action() -- Нажата кнопка: OK
btn2.action() -- Отмена действия