lua 函数美学1

函数美学

motto: 不要用多余的括号,尤其是当参数也包含括号(引号、大括号、方括号)

下面展示一个例子。这个例子主要展示去掉括号后,代码的视觉效果,以及Curry化。 依赖 cosmo

-- 实现 Latex 模板
cosmo = require "cosmo"

function env(t)
    if t.content then
    s=cosmo.fill([[\begin{$name}[$option]
        $content
\end{$name}
    ]], t)
    return s
    else
    -- Curry化
        function g(s)
            t.content=s
            return env(t)
        end
    end
    return g
end

print(env{name='env',option='option', content='hello'})

-- 比看毛片还爽的代码,分分钟实现s表达式
print(env {name='env',option='option'} 'hello')

OUPUT:

\begin{env}[option]
        hello
\end{env}
点赞