x and y or z是lua里的短路求值
相当于
if x then
y
else
z
end
string.find如果没有找到目标串,那么就是nil,找到了就会有数值
在lua中,只有nil和false为假,其他都为真
在lua中,如果一个函数返回多个值,并且没对后面的值操作,那就只有前面的有效
这里只有string.find返回的第一个值被代码用上了
并且如果没返回东西,那就是nil
上面几点加起来就明白了吧?
本人初学luat
如图,红线的代码看不太懂,
moduleType =string.find(rtos.get_version(),"8955")and2or4
以下为我的思路:
根据标准库,string.find(),返回的是“8599”在rtos.get_version()的地址,假设rtos.get_version()函数所得到的值为“2019 8599”,
那么string.find()就得到5和8两个值,然后这两个值 and 2 or 4?
问题一:返回的两个值是怎么,以怎样的顺序 and 2 or 4 的?
问题二:逻辑运算出来的结果(and 2 or 4 )是不是只有flase 和 true?如果是,moduleType的值是个 flase和true?那上图的注释的模块类型是什么?