LINUX.ORG.RU

История изменений

Исправление arturpub, (текущая версия) :

function inverter(input, output)
    local function invert_input()
        local new_value = not get_signal(input)
        after_delay(inverter_delay, function ()
            set_signal(output, new_value)
        end)
    end
    add_action(input, invert_input)
    return "ok"
end
function inverter(input, output)
    add_action(input, function ()
        local new_value = not get_signal(input)
        after_delay(inverter_delay, function ()
            set_signal(output, new_value)
        end)
    end)
    return "ok"
end
function inverter(input, output)
    input:add_action(function ()
        local new_value = not input:get_signal()
        after_delay(inverter_delay, function ()
            output:set_signal(new_value)
        end)
    end)
    return "ok"
end

Вроде все то же самое, а как читается по-разному, имо. Со второй лямбдой в лиспе был бы совсем кошмар.

ps. и самопальный синтаксис:

function inverter(input, output)
    input:add_action(\{
        local new_value = not input:get_signal()
        after_delay(inverter_delay, \{ output:set_signal(new_value) })
    })
    return "ok"
end

Исходная версия arturpub, :

function inverter(input, output)
    local function invert_input()
        local new_value = not get_signal(input)
        after_delay(inverter_delay, function ()
            set_signal(output, new_value)
        end)
    end
    add_action(input, invert_input)
    return "ok"
end
function inverter(input, output)
    add_action(input, function ()
        local new_value = not get_signal(input)
        after_delay(inverter_delay, function ()
            set_signal(output, new_value)
        end)
    end)
    return "ok"
end
function inverter(input, output)
    input:add_action(function ()
        local new_value = not input:get_signal()
        after_delay(inverter_delay, function ()
            output:set_signal(new_value)
        end)
    end)
    return "ok"
end

Вроде все то же самое, а как читается по-разному, имо. Со второй лямбдой в лиспе был бы совсем кошмар.