lua strings和numbers的类型转换

在我们项目的lua脚本中,经常会看到下面形式的代码

local Key = ‘domain:‘ .. ARGV[1] .. ‘:sub‘

可以看到在构建redis的key时,有两个 .. 符号用于构建字符串。

..在lua中是字符串连接符,当在一个数字后面写..时,必须加上空格以防止被解释错。

lua会自动在string 和numbers之间自动运行类型转换,当一个字符串使用算术操作符时,string就会被转化成数字。

[[email protected] ~]# lua
Lua 5.3.1  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> print("10" + 1)
11.0
> print("10+2")
10+2
> print("hello" +1)
stdin:1: attempt to perform arithmetic on a string value
stack traceback:
        stdin:1: in main chunk
        [C]: in ?

发过来,当lua期望一个string而碰到数字时,会将数字转化成string.

> print(100 .. 20)
10020

..在Lua中是字符串连接符,当在一个数字后面写..时,必须加上空格以防止被解释错。

尽管字符串和数字可以自动转换,但是两者是不同的,像 10=="10"这样的比较都是错的。

> print( 10 == "10")
false

如果需要显式将string转成数字可以使用函数tonumber(),如果string不是正确的数字该函数将返回nil。

> str = 10 ..20
> str
1020
> print( str == 1020)
false
> print( tonumber(str) == 1020)
true

反之,可以调用tostring()将数字转成字符串,这种转换一直有效:

> print( tostring(10) == "10")
true
> print( 10 .. "" == "10")
true

参考文章:http://book.luaer.cn/

时间: 2024-08-25 19:16:48

lua strings和numbers的类型转换的相关文章

11.总数字作为数字Sum Strings as Numbers

总的来说这是一个将字符串转化为数字进行计算再转化为字符串的计算,醉生与死: Given the string representations of two integers, return the string representation of the sum of those integers. For example: sumStrings('1','2') // => '3' A string representation of an integer will contain no ch

Redis Lua 脚本使用

Lua语言提供了如下几种数据类型:booleans(布尔).numbers(数值).strings(字符串).tables(表格). 下面是一些 Lua 的示例,里面注释部分会讲解相关的作用: -- -- -- 拿客 -- 网站:www.coderknock.com -- QQ群:213732117 -- 三产 创建于 2017年06月15日 12:04:54. -- 描述: -- -- local strings website = "coderknock.com" print(we

Lua 5.1 参考手册

Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingnow.com Copyright © 2006 Lua.org, PUC-Rio. All rights reserved. 1 - 介绍 Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施. Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持.

lua学习之table类型

关系表类型,这是一个很强大的类型.我们可以把这个类型看作是一个数组.只是 C语言的数组,只能用正整数来作索引: 在Lua中,你可以用任意类型的值来作数组的索引,但这个值不能是 nil.同样,在C语言中,数组的内容只允许一种类型:在 Lua中,你也可以用任意类型的值来作数组的内容,nil也可以. 基本介绍 注意三点:  第一,所有元素之间,总是用逗号 "," 隔开: 第二,所有索引值都需要用 "["和"]" 括起来:如果是字符串,还可以去掉引号和中

【Lua】LDoc生成Lua文档工具的使用

参考资料: http://my.oschina.net/wangxuanyihaha/blog/188909 LDoc介绍: LDoc是一个Lua的文档生成工具,过去,比较常用的Lua生成文档的工具是LuaDoc,可惜作者自从2008年之后就再也没有发布过新的版本了,说明作者基本上已经放弃维护了.而LDoc则是一直在更新中,所以现在选择LDoc来给Lua生成文档是更好的选择,LDoc的Github主页. LDoc的一个优点就是,它的目的是为了和LuaDoc兼容并且拓展LuaDoc的功能而制作的,

lua MVC框架 Orbit初探

介绍 http://keplerproject.github.io/orbit/ Orbit是lua语言版本的MVC框架. 此框架完全抛弃CGILUA的脚本模型, 支持的应用, 每个应用可以卸载一个单独的文件中,当然你也可以将它拆为一个文件, 当你需要时候. 此框架运行在WSAPI协议的服务器上,所以可以工作在 Xavante和一些CGI和fastcgi程序上. Orbit is an MVC web framework for Lua. The design is inspired by li

uhttpd 架构调用细节之lua

uhttpd是openwrt系统默认集成的轻量级服务器,采用select机制对设备性能要求较低. /usr/sbin/uhttpd -f -h /www -r wifibox -x /cgi-bin -l /slipt -L /usr/share/lua/wifibox/main.lua -t 60 -T 30 -k 20 -A 1 -n 3 -N 100 -R -p 0.0.0.0 80 这是一类智能路由器uhttpd的运行参数,其中-h指定的是网站的根目录,静态文件请求会在会以这个目录为根目

Lua1.1 Lua 的设计和实现 (一)

转载出处:http://my.oschina.net/xhan/blog/309613 说明: 这个文档是 Lua1.1 的 doc 目录里的 lua.ps 文件. 同时这个文档可以这里找到:http://www.lua.org/semish94.html 原文版权归原作者所有,这篇翻译只是作为学习之用.如果翻译有不当之处,请参考原文. --------------------以下是正文------------------ 应用程序扩展语言的设计和实现 摘要.我们描述 Lua 的设计和实现,一个

Joining strings

When working with variables that contain strings or numbers. There's often a need to join their values. Either to display directly on screen or to store in a variable. This is particularly important when using PHP to send an email message. There are