Lua计算字符串长度时报错,正确的计算方式是什么?
Lua 字符串长度计算方法说明
报错原因
attempt to call global 'len' (a nil value) 报错的原因是 Lua 标准库没有定义全局的len函数,直接调用全局len属于访问不存在的全局变量,自然会触发报错。
正确的计算方式(共三种,按推荐优先级排序)
- 长度操作符
#(最常用)
直接在字符串变量前添加#即可获取长度,语法简洁性能高,是绝大多数场景的首选写法:local a = "string" print(#a) -- 输出 6 - 显式调用string标准库方法
调用string.len()并传入目标字符串作为参数:local a = "string" print(string.len(a)) -- 输出 6 - 字符串实例方法调用
Lua的字符串实例默认继承string模块的所有方法,可使用冒号语法直接调用,冒号语法会自动将当前字符串作为第一个参数传入方法:local a = "string" print(a:len()) -- 输出 6,等价于你代码中的`a.len(a)`写法
补充说明
你代码中打印a.len得到函数内存地址是正常现象,这里的a.len实际就是指向string.len这个标准库函数,所以调用时必须传入字符串本身作为第一个参数才能得到正确的长度结果。
内容的提问来源于stack exchange,提问作者user977828
相关产品推荐
相关产品推荐

