Menu
Coddy logo textTech

Tabele z funkcjami

Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 1 z 70.

W Lua tablice są niezwykle wszechstronne. Oprócz przechowywania danych mogą także zawierać funkcje. Pozwala to grupować powiązane operacje, dzięki czemu kod jest uporządkowany i łatwy w zarządzaniu.

Aby umieścić funkcję w tabeli, po prostu przypisz ją do klucza, tak jak każdą inną wartość:

local myTable = {
    greet = function(name)
        return "Hello, " .. name
    end
}

print(myTable.greet("Alice"))  -- Wynik: Hello, Alice

Możesz też zdefiniować funkcję osobno, a następnie dodać ją do tabeli:

local myTable = {}

myTable.greet = function(name)
    return "Hello, " .. name
end

Możesz też użyć tej czytelniejszej, skróconej składni:

local myTable = {}

function myTable.greet(name)
    return "Hello, " .. name
end

Wszystkie trzy podejścia dają ten sam rezultat. Wywołujesz funkcję za pomocą notacji kropkowej: myTable.greet("Alice"). Ten wzorzec łączenia funkcji z danymi stanowi podstawę programowania obiektowego w Lua.

challenge icon

Wyzwanie

Łatwy

Utwórz tabelę o nazwie calculator, która zawiera cztery funkcje arytmetyczne:

  • add(a, b) — zwraca sumę a i b
  • subtract(a, b) — zwraca wynik odejmowania b od a
  • multiply(a, b) — zwraca iloczyn a i b
  • divide(a, b) — zwraca wynik dzielenia a przez b

Otrzymasz trzy dane wejściowe:

  1. Nazwę operacji (jedną z: add, subtract, multiply, divide)
  2. Pierwszą liczbę
  3. Drugą liczbę

Wywołaj odpowiednią funkcję z tabeli calculator na podstawie nazwy operacji i wypisz wynik.

Spróbuj swoich sił

-- Wczytaj dane wejściowe
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())

-- TODO: Utwórz tabelę calculator z czterema funkcjami:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)


-- TODO: Wywołaj odpowiednią funkcję z tabeli calculator, używając nazwy operacji
-- i wypisz wynik
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Lua online