[lua]筆記 - 變量,基本類型

 

 

--單行註釋
--[[
多行註釋
--]]

-- 默認全局變量
a = "I am yoyo!" 
print(a) --I am yoyo!
print(b) --nil
a = nil  --刪除一個全局變量
print(a)      --> nil

-- local 局部變量,訪問局部變量的速度比全局變量更快,儘可能使用局部變量
local c = 5        
function joke()
    d = 5           -- 全局變量
    local e = 6     -- 局部變量
end
joke()
print(d, e)          --> 5 nil

do 
    local a = 6     -- 局部變量
    b = 6           -- 全局變量
    print(a,b);     --> 6 6
end
print(a,b)      --> 5 6

--賦值
a, b = 10, 2*x       <-->       a=10; b=2*x 能夠多個賦值

--會先計算右邊全部的值,再賦值
x, y = y, x                     -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i]         -- swap 'a[i]' for 'a[j]'

-- 右邊值不夠,nil補足
a, b, c = 0, 1
print(a,b,c)             --> 0   1   nil
-- 右邊值過多,忽略
a, b = a+1, b+1, b+2     -- value of b+2 is ignored
print(a,b)               --> 1   2

-- 數據類型:nil boolean string number function userdata thread table

print(type(10.4*3))             --> number
print(type(print))              --> function
print(type(type))               --> function
print(type(true))               --> boolean, true-真 false和nil爲假
print(type(nil))                --> nil

-- 數據類型:string
print(type(type(X)))            --> string
print(type("Hello world"))      --> string

-- 單引號內:string
string2 = 'runoob.com' print("字符串 2 是",string2)
-- 能夠用 2 個方括號 "[[]]" 來表示"一塊"字符串
html = [[
<html>
<head>
</head>
<body>
</body>
</html>
]]

print("2" + 6) --8.0 對字符進行算術操做,會將字符轉爲數字

-- ..表示字符串鏈接操做
print("a" .. 'b') --ab 
print(157 .. 428) --157428

-- # 計算字符串的長度
len = "www.runoob.com"
print(#len) --14

-- 數據類型:table

-- 建立一個空的 table
local tbl1 = {}

-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}



--能夠是map,類型能夠並存,不存在key,則value爲nil
a = {}
a["key"] = "value"
--當索引爲字符串類型時,可使用 a.key
key = 10
a[key] = 22
a[key] = a[key] + 11

for k, v in pairs(a) do
    print(k .. " : " .. v)
    --key : value
     --10 : 33
end

-- table索引以 1 開始
local tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
    print("Key", key)
    --Key    1
    --Key    2
    --Key    3
    --Key    4
end

-- 數據類型:function
function factorial1(n)
    if n == 0 then
        return 1
    else
        return n * factorial1(n - 1)
    end
end
print(factorial1(5)) --120
factorial2 = factorial1
print(factorial2(5)) --120

--函數能夠做爲參數傳入
function testFun(tab,fun)
    for k ,v in pairs(tab) do
        print(fun(k,v));
    end
end

tab={key1="val1",key2="val2"};
testFun(tab,
function(key,val) --匿名函數
    return key.."="..val;
    --key1 = val1
    --key2 = val2
end
);

-- 數據類型:thread
相關文章
相關標籤/搜索