2 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
LUA數(shù)據(jù)轉(zhuǎn)換問(wèn)題:
在LUA里面所以的數(shù)據(jù)類(lèi)型都會(huì)內(nèi)部轉(zhuǎn)化為double型,如果需要顯示一個(gè)double型可以這樣做:
LUA:
local num=3.14;
printf(totring num)。
當(dāng)Lua通過(guò)call或 pcall函數(shù)執(zhí)行Redis命令的時(shí)候,命令的返回值會(huì)被轉(zhuǎn)換成Lua數(shù)據(jù)結(jié)構(gòu)。 同樣地,當(dāng)Lua腳本在Redis內(nèi)置的解釋器里運(yùn)行時(shí),Lua 腳本的返回值也會(huì)被轉(zhuǎn)換成Redis協(xié)議(protocol),然后由EVAL將值返回給客戶(hù)端。
數(shù)據(jù)類(lèi)型之間轉(zhuǎn)換遵循這樣一個(gè)設(shè)計(jì)原則:如果將一個(gè)Redis值轉(zhuǎn)換成Lua值,之后再將轉(zhuǎn)換所得的Lua值轉(zhuǎn)換回Redis值,那么這個(gè)轉(zhuǎn)換所得的Redis值應(yīng)該和最初時(shí)的Redis值一樣。
換句話(huà)說(shuō),Lua類(lèi)型和Redis類(lèi)型之間存在著一一對(duì)應(yīng)的轉(zhuǎn)換關(guān)系。
lua中整數(shù)和浮點(diǎn)數(shù)之間沒(méi)有什么區(qū)別。因此,我們始終Lua的數(shù)字轉(zhuǎn)換成整數(shù)的回復(fù),這樣將舍去小數(shù)部分。如果你想從Lua返回一個(gè)浮點(diǎn)數(shù),你應(yīng)該將它作為一個(gè)字符串(見(jiàn)比如ZSCORE命令)。
There is no simple way to have nils inside Lua arrays, this is a result of Lua table semantics, so when Redis converts a Lua array into Redis protocol the conversion is stopped if a nil is encountered.
Lua是動(dòng)態(tài)類(lèi)型語(yǔ)言,所以變量沒(méi)有類(lèi)型,僅值有類(lèi)型。值可以被存儲(chǔ)在變量中,作為參數(shù)傳遞,并作為結(jié)果返回。
在Lua中雖然沒(méi)有變量的數(shù)據(jù)類(lèi)型,但有類(lèi)型的值。
- 2 回答
- 0 關(guān)注
- 874 瀏覽
添加回答
舉報(bào)