Lua

Lua jest interesującym językiem skryptowym, którego dodatkowym atutem jest dobra współpraca z C (skrypty Lua mogą służyć do zapewnienia w wygodny sposób warstwy skryptowej programom tworzonym w C/C++). Przykład współpracy Lua i C pokazany jest w c_lua_api.lua i c_lua_api.c (warto zapoznać się także z użytą w tym przykładzie biblioteczką LuaGenericCall). Poniżej prezentuje przykład bezpośredniego wykorzystania Lua jako języka skryptowego (uruchamia się go lua5.1 nazwa_pliku.lua). Więcej na temat tego języka w Lua 5.1 Reference Manualkopia lokalna, Lua @ WikibooksLua-users wiki - Sample Code.

-- w ten sposob tez mozna deklarowac funkcje ...
printf = function(fmt, ...)
  -- ten trzykropek powoduje ze jest wieloargumentowa
  -- uwaga: to dziala w lua >= 5.1
  return io.write(fmt:format(...))
end

printf("Ala w dniu %s miała %d koty\n", os.date("!%F %T (UTC)"), 3)
-- wykrzyknik w napisie formatujacym date powoduje zwrocenie daty w UTC
-- napisy formatujace sa zgodne z strftime()

napisA="Kot ma Ala abcabcbbba"
napisB=string.format("HELLO x %d", 3.5)


napisC, num = string.gsub(napisA, "b.a", "")
-- druga zwrocona wartoscia jest ilosc podmian - odbieramy oba agrumenty
print( napisC )
print( "zastapien:", num )
print( string.gsub(napisA, "(K[^ ]*)(.*)(A[^ ]*)", "%3 %2 %1") )

-- mozemy zobie dynamicznie przenazywac funkcje
my_print = printf
my_print("AAA %s BBB\n", napisB)

-- uwaga: tablice indeksowane numerycznie indeksowane sa od 1
-- #tablica zwraca ilosc elementow (numer ostatniego)
tablica = { "Q", "W", "E", "R" }
print(#tablica, tablica[1])

-- dodajemy element na koncu i to innego typu (!)
tablica[#tablica+1]=1
print(#tablica, tablica[5])

-- sa tez struktury ...
struktura = { a="Q", b="W" }
print(struktura["a"], struktura.b)

struktura.c = tablica
print(struktura.c[3])

-- w zasadzie to tak jak tablica tez rodzaj tabeli tylko z bardziej dowolnie nazywanymi polami
struktura["ala"] = "kota\n"

-- mozemy tez dodac metode jako skladowa
struktura.wypisz = printf
struktura.wypisz("Ala ma %s", struktura["ala"])

-- więcej na http://www.lua.org/manual/5.1/


Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/programing/more/lua) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-09-29 20:04:03 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).