在咱們項目的lua腳本中,常常會看到下面形式的代碼
redis
local Key = 'domain:' .. ARGV[1] .. ':sub'
能夠看到在構建redis的key時,有兩個 .. 符號用於構建字符串。dom
..在lua中是字符串鏈接符,當在一個數字後面寫..時,必須加上空格以防止被解釋錯。函數
lua會自動在string 和numbers之間自動運行類型轉換,當一個字符串使用算術操做符時,string就會被轉化成數字。lua
[root@localhost ~]# 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.spa
> print(100 .. 20) 10020
..在Lua中是字符串鏈接符,當在一個數字後面寫..時,必須加上空格以防止被解釋錯。code
儘管字符串和數字能夠自動轉換,可是二者是不一樣的,像 10=="10"這樣的比較都是錯的。orm
> print( 10 == "10") false
若是須要顯式將string轉成數字能夠使用函數tonumber(),若是string不是正確的數字該函數將返回nil。字符串
> str = 10 ..20 > str 1020 > print( str == 1020) false > print( tonumber(str) == 1020) true
反之,能夠調用tostring()將數字轉成字符串,這種轉換一直有效:get
> print( tostring(10) == "10") true > print( 10 .. "" == "10") true
參考文章:http://book.luaer.cn/
string