功能提案 |
|
核心
库和功能
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?