]]> ]]>

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

]]>

Работа программистам