1. 程式人生 > >Cocos2d-Lua之型別及型別轉換

Cocos2d-Lua之型別及型別轉換

一、Lua型別

Lua中的型別只有四種:
1. number
2. string
3. boolean
4. function

根據其他語言後三種類型就不解釋了,第一種型別number,既包括整型,也包括浮點型,統一都是number型。

lua用type函式列印型別:

local a = 5
local b = 5.5;
local c = "hello";
local d = true;

print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(fun));

function fun()
local a = "hello, world" end

輸出結果:

這裡寫圖片描述

二、string與number間的轉換

lua中的string和number型別間有個強大的功能,如果string型別的值看上去是個number,那麼系統就會自動轉換成number型別。

local a = "5"
local b = "5.5";

print(type(a))
print(type(b))
print(a + b)
print(type(a + b))

輸出結果:

這裡寫圖片描述

可以看到兩個string型別的變數a和b一做加法,系統將他們自動變成了number型。這樣看似number型的string和number相加同樣會自動轉換。

那麼如果並不是看上去那樣是個number的string型別相加呢,這裡也給個例子:

local a = "5"
local b = "w.55";

print(type(a))
print(type(b))
print(a + b)
print(type(a + b))

輸出結果:

這裡寫圖片描述

可以看到這樣就會報錯了,系統自動識別number真的是很強大,同樣這個地方要非常的小心,可能本意並不想轉number型,但是系統自動轉了。

三、string和number型別的連線功能

Lua中的string型別是通過“..”講兩個string進行連線的:

local a = "5"
local
b = ".55"; print(type(a)) print(type(b)) print(a .. b) print(type(a .. b))

輸出結果:

這裡寫圖片描述

可以看到兩個string連成了5.55,型別仍然是string,這裡並不會自動轉換。同樣可以多個number或者string混合連線,這種連線功能只適用於string和number型別間,function和boolean型別都不支援。