Lua 5.1
Версия реализации Lua языка программирования LuaВерсия Lua 5.1 выпущена 21 февраля 2006 года. Основные особенности версии 5.1 — новая система модулей, инкрементальный сборщик мусора, новый механизм varargs, новый синтаксис для длинных строк и комментариев, операторы mod и length, метатаблицы для всех типов, новая схема настройки через luaconf.h и полностью повторно входимый парсер.
Ссылки:
Примеры:
Факториал - Lua (1):
Используется рекурсивное определение факториала.
function factorial(n)
if (n == 0) then
return 1
else
return n * factorial(n - 1)
end
end
for n = 0, 16 do
io.write(n, "! = ", factorial(n), "\n")
end
Квадратное уравнение - Lua (207):
*n указывает на то, что читается число.
local A = io.read('*n')
if A==0 then
io.write('Not a quadratic equation.')
return
end
local B = io.read('*n')
local C = io.read('*n')
D = B*B-4*A*C
if D==0 then
io.write('x = ', -B/2/A)
else if D>0 then
io.write('x1 = ', (-B+math.sqrt(D))/2/A, '\nx2 = ', (-B-math.sqrt(D))/2/A)
else
io.write('x1 = (', -B/2/A, ',', math.sqrt(-D)/2/A, ')\nx2 = (', -B/2/A, ',', -math.sqrt(-D)/2/A, ')\n')
end
end
CamelCase - Lua (355):
Создатели Lua ставили себе за цель создание максимально легкого языка, поэтому вместо полноценных регулярных выражений язык поддерживает pattern matching. Впрочем, это позволяет реализовать большинство функций регулярных выражений без лишних трудозатрат.
В данном примере первая строка читает строку для преобразования; функция io.read()
без аргумента читает строчный тип. Вторая строка изменяет регистр каждой последовательности букв к нужному; паттерн %a
соответствует букве в любом регистре, и для каждого соответствия паттерну вызывается анонимная функция, выполняющая преобразование. Третья строка убирает все последовательности не-букв, и, наконец, четвертая выводит результат на печать.
text = io.read()
text = text.gsub(text, '[%a]+', function(s)
return string.upper(string.sub(s,1,1)) .. string.lower(string.sub(s,2))
end)
text = text.gsub(text, '[%A]+', '')
io.write(text)
Комментарии
]]>blog comments powered by Disqus
]]>