Lua

Aus Info-Theke
Zur Navigation springen Zur Suche springen

Links[Bearbeiten]

Kommentar, Litterale und Syntax[Bearbeiten]

-- Kommentar
-- [[
Blockkommentar
-- ]]
-- String-Delimiter " und ' sind gleichwertig
a = "abc" .. 'def'
bool = true or false
true_value = '' or 0 or anyThingButFalse()
false_value = nil or false
bool2 = not bool

Statements[Bearbeiten]

-- Assignments:
a = 3
-- Ersatz für cond ? alt1 : alt2:
val = cond and alt1 or alt2

-- comment
if a == "a" and b ~= "b" or not testIt() then
  local c = a .. "Hi"
elseif c < 2 then
  print('Hi')
end
while x < 3 do
  print(x)
end
repeat
  do_it(1)
until test_it(b)
-- Auswertung der 3 Parameter von for ist einmalig!
for ii=start,end,step do
  print(ii)
end
for ii=0,12 do
  print(ii)
  if ii==stopper then
    break
  end
end
-- print all values of array `a'
for i,v in ipairs(a) do print(v) end

Typen[Bearbeiten]

int[Bearbeiten]

-- automatische Wandlung von String:
ix = "4" + ix2

String[Bearbeiten]

a = "hi " .. b .. "!"
-- Suche
start,end = string.find(heap, needle, startIx, plain)
i1,i2 = string.find("long sentence with words", "o")
-- returns 2, 2
found = string.match("long sentence with words", "o")
-- returns "o2
-- implizit

Tables[Bearbeiten]

  • Alle zusammengesetzten Objekte (Arrays, Lists...) in Lua sind Tables:
-- Assoziatives Array:
a = { ['name'] = 'Jonny', ['email'] = 'a@b.c' }
if a['name'] then print("name found!") end

Arrays[Bearbeiten]

arr = { 1, 2, 3 }
-- der Startindex ist normalerweise 1, muss aber nicht sein:
a = {}
for i=-5, 5 do
      a[i] = ii + 100
end
if a[-5] ~= 100 - 5 then
  error("wrong")
end
-- 2-dimensionales Array:
mt = {}          -- create the matrix
for i=1,N do
  mt[i] = {}     -- create a new row
  for j=1,M do
    mt[i][j] = 0
  end
end

Listen[Bearbeiten]

-- Start:
list = nil
-- Erster Eintrag:
list = {next = list, value = 99}
-- Suchen:
local l = list
while l do
  print(l.value)
  l = l.next
end

NGINX-Dialekt[Bearbeiten]

  • Lua ist in nginx-full eingebaut:
    access_by_lua '
      local ix1,ix2 = string.find(ngx.var.http_accept_language, "de", 1, true)
      if ix1 == 1 then
        if string.find(ngx.var.uri, "/de/", 1, true) then
          ngx.redirect("https://frei-netz.org")
        end
      end
     ';
  • nginx.var.http_accept_language
  • nginx.var.uri: z.B. "/help/intro.php"
  • nginx.say("<html><body>Hi World!</body></html>\n")