功能提案 |
|
核心
库和功能
table.sort(t, comp) 返回 t,就像 setmetatable() 一样。这似乎只是在 ltablib.c 的 sort() 函数中添加一个 lua_settop(L, 1); 并将返回值从 0 更改为 1 的问题。
语法
|x| x*x 而不是 function(x) return x*x end。这经常被注意到。
.. 的结合性为右结合,并且限制为大约 200 次连接(^ 也是如此),这可能是一个限制。
a ? b : c)只能通过 x and y or b 部分近似。
then”和“do”)。其他人对此强烈反对。这似乎不太可能,除非例如通过令牌过滤。
foo:bar())在没有调用部分(foo:bar)的情况下评估为柯里化闭包
语义
dofile 不会在调用者环境中执行,而是在全局环境中执行:DofileNamespaceProposal。
表达能力
nil 和 NaN 不能存储在表中 - 参见 StoringNilsInTables
...)。此外,Rici 的不可变元组类型提案,带有后缀解包运算符 ...,例如 e = <4,5>; assert(e[2] == 5); assert(#e == 2); a,b,c... = d,e...; assert(c == <5>); assert(<2,3> .. <4> == <2,3,4>); t[<2,3>] = <3,4>; function f(a...) return function(b...) return a,b end end; assert(<f<1,2><3,4>> == <<1,2>,<3,4>>)
代码质量/正确性/错误处理
module 函数在模块定义中暴露了许多缺陷:LuaModuleFunctionCritiqued。可能消除或修改此函数。
error(message,level) 中的 level 难以管理。它甚至没有在 assert 中设置 - 参见 LuaCarp。
checkglobals 函数包含在内(除了现有的 etc/strict.lua 和 test/globals.lua 解决方案)。
checkglobals”,了解用例。
打包
编码风格
未分类
这些用户页面维护着功能提案列表
pcall 的 yield [4]、YieldableForLoops、ResumableVmPatch、[coxpcall]。 在 5.2 中大部分已解决。
continue语句不可用。很多人要求过这个功能。参见ContinueProposal。(在 5.2 中通过 goto 语句解决。)
%f 模式表达式在 5.2 之前没有文档记录。
另请参见LuaFiveTwo。
这些问题已关闭、撤回或已实施。
nil和false
n”字段的讨论(尽管在StoringNilsInTables中仍然有一些问题)
一些功能已作为非标准补丁实现:LuaPowerPatches。其他想法在MetaLuaRecipes中实现。
这将打印“1”。可能最好要求“--[[”注释以“--]]”而不是“]]”结束。
--[[ g = f[x[y]] print(1) --]]
我们可以从本页中删除不是实际功能提案的项目(例如StoringNilsInTables)吗?也许可以开始 LuaWarts?