2 回答

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