Lua:读取userdata作为数字/比较userdata和数字

时间:2017-07-22 15:10:14

标签: input lua torch matio

我正在尝试从文件中导入数字,如果它们处于某个值,则更改它们。我使用火炬来获取gesture的值,如果输入是相应的数字,则将其从101更改为10或从100更改为9或9)。不幸的是,我已经发现在Lua中,输入的类型为userdata,它不能转换为整数,也不能与整数或火炬张量进行比较。

所以我的问题是:如果输入类型为userdata,如何检查数字是否相等?

是否有可能将输入转换为数字以便进行比较?

gesture = matio.load(val, 'gesture')

print(type(gesture)) --prints `userdata`
print(gesture)       --prints 10 (for example)
if gesture == th.FloatTensor({101}) then
    gesture = th.FloatTensor({10})
    print("101 Detected! New value is: ")
    print(gesture)
    os.exit(0)
elseif gesture == th.FloatTensor({100}) then
    gesture = th.FloatTensor({9})
    print("100 Detected! New value is: ")
    print(gesture)
    os.exit(0)
end

2 个答案:

答案 0 :(得分:2)

找到一种更简单的方法

    local gesture_int = gesture:uint()

答案 1 :(得分:1)

这是一个相当复杂的问题,经过艰难的测试后,我找到了一种比较用户数据和整数的方法。

print(type(gesture)) -> prints `userdata`
print(gesture) -> 10
gesture_str = tostring(gesture)
print(type(gesture_str)) -> prints `string`
gesture_int = tonumber(gesture_str)
print(type(gesture_int)) -> prints `number`

单线解决方案如下

gesture_int = tonumber(tostring(gesture))

此新变量将用户数据编号存储为整数。