根据固件判断模块类型相关函数看不明白。。

attachments-2019-09-qrk3dfJZ5d7f9579d60d1.png

本人初学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?那上图的注释的模块类型是什么?

请先 登录 后评论

2 个回答

晨旭 - 菜鸟

x and y or z是lua里的短路求值

相当于

if x then

y

else

z

end


string.find如果没有找到目标串,那么就是nil,找到了就会有数值

在lua中,只有nil和false为假,其他都为真


在lua中,如果一个函数返回多个值,并且没对后面的值操作,那就只有前面的有效

这里只有string.find返回的第一个值被代码用上了

并且如果没返回东西,那就是nil


上面几点加起来就明白了吧?

请先 登录 后评论
Maxwell66

谢谢,懂了!那要在哪里手册查看模块类型2和模块类型4的区别?


请先 登录 后评论
  • 1 关注
  • 0 收藏,2101 浏览
  • Maxwell66 提出于 2019-09-16 22:15

相似问题