Lua新语言运算符的条件评估

问题描述 投票:0回答:1

我正在 Lua 中为自定义数据包类型编写 Wireshark 解析器,包括 Lua 5.2 及更低版本(当前版本)的 Wireshark 版本包含 BitOp 库,而即将发布的版本将包含 Lua 5.3 或更高版本,并将使用内置的按位运算。

我的目标是让 Lua 版本自动处理这种转换,而不必更新每个版本的解析器。我当前的代码是:

local bit = nil
if tonumber(string.sub(_VERSION, 5)) < 5.3 then
    bit = require("bit")
end

local version_byte = 0xaf
if bit then
    print("BitOp method")
else
    print((version_byte >> 4) * 10 + (version_byte & 0xf))
end

问题是 Lua 5.2(当然)无法识别按位移位和 & 运算符并抛出

unexpected symbol near '>'
。有没有办法有条件地评估这样的事情?

lua wireshark wireshark-dissector
1个回答
0
投票

这是条件编译。当然可以。

if bit then
    print("BitOp method")
else
    load[[
        -- arbitrary chunk of code
        print((version_byte >> 4) * 10 + (version_byte & 0xf))
    ]]()
end
© www.soinside.com 2019 - 2024. All rights reserved.