我正在尝试从文件中导入数字,如果它们处于某个值,则更改它们。我使用火炬来获取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
答案 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))
此新变量将用户数据编号存储为整数。