gpt4 book ai didi

lua - 脱糖 Lua 运算符

转载 作者:行者123 更新时间:2023-12-01 09:35:29 24 4
gpt4 key购买 nike

由于 Lua 支持一流的函数,我想知道您是否可以像在许多函数式语言中那样对运算符进行脱糖。例如,在 OCaml 中你可以这样做:

let x = (+) 3 5

上面的代码用 3 + 5 的值初始化变量 x。编写 (+) 相当于有一个本地函数,它接受两个参数并返回它们的和。 (+) 3 5 使用两个参数 35 调用此函数。这背后的动机是您可以将运算符直接传递给函数,而不必在之前将其包装在函数中:

local t = {"ab", "d", "c" }
local function op_greaterthan (a,b) return a>b end
table.sort (t, op_greaterthan) --would like to write: table.sort (t, (>))

谢谢!

最佳答案

你不能。

Lua 解释器很小,在处理操作符时会“走捷径”;对于解析器,它们根本不是“函数”。

如果您尝试使用不带参数的运算符,如下所示:

f(+)

然后解释器会抛出语法错误。

由于这种实现,您只能使用已经讨论过的选项:要么使用包装函数(例如 add),要么传入字符串等某种 eval ,就像 jpjacobs 的解决方案一样。

关于lua - 脱糖 Lua 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com