-- 函数定义
add = function ( a,b)
return a + b
end
--局部函数
local add1 = function ( a,b)
return a + b
end
-- 函数 语法糖
function subtract( a,b )
return a - b
end
print("add(1,2)", add(1,2))
print("subtract(1,2)", subtract(1,2))
--局部函数
local add1 = function ( a,b)
return a + b
end
function process(f,a,b)
print("f:",f)
print("a:",a)
print("b:",b)
print("f(a,b)", f(a,b))
end
process(add1, 8,9)
可变参数运算符:
-- 可变参数
function add(...)
local sum = 0
local arg = {...}
for k,v in ipairs(arg) do
sum = sum + v
end
return #arg, sum
end
print(add(1,2,3,4,5,6,7,8,9))
function average ( ... )
local count , sum, temp = add(...)
return sum/count
end
print(average(1,2,3,4,5,6,7,8,9))
- # 求长度 (下标要连续的 整数才可以 求出 真正的长度)
a = {1,2,3,4,5,6,7,8,9,x=100, y =2000} print(#a) 输出的是 9 而实际的长度 应该是 11
- 字符串的 .. 链接符 不推荐使用
a = 'abc' b = 'def' c = a..b print(c) 输出 abcdef
and or not --- 短路求值 无三目运算符
print("1 and 3:",1 and 3)
print("false and b:",false and 3)
print("true and b:",true and 3)
-1 and 3: 3
-false and b: false
-true and b: 3
模拟 三目运算符:
tag = (a and b) or c --and 优先级大于 or
逻辑运算符的优先级
and 优先级 大于 or
运算符的 结合性
.. ^ 右结合 , 其余都是 左结合
位运算: lua 5.3 版本完全支持, 之前版本不支持
- & 与运算
- | 或运算
- ~ 异或运算 其他语言中 回事 ^
- ~ 非运算
- >> 左移运算符
- << 右移运算符
--位运算
--3 : 0000 0011
--5 : 0000 0101
a = 3 --0000 0011
b = 5 --0000 0101
print("a&b:",a&b) --对应位上 必须两个 都为 1 才是 1
print("a|b:",a|b) --对应位上 只要有一个 1 为1 否则 为 0
print("a~b:",a~b) --对应位上 不同 则为 1 否则 为 0
print("~a:", ~a) --取反
print("a^b:", a^b) --a 的 b 次幂
print("a<<2:",a<<2) --向左移动一位 变大 移动一位相当于 乘 2
print("a>>2:",a>>2) --向左移动一位 变大 移动一位相当于 除 2
print("b<<2:",b<<2)
print("b>>2:",b>>2)
a = "abs+\nDf"
print(string.upper(a))
print(string.lower(a))
b = [[
弄是谁 ?
弄在哪?
吃了吗
long string
我这里有水
]]
print(b)
-- 语法糖 --三种写法等价
print(string.len( a ))
print(a:len())
print(a.len(a))
-- string. 正则表达式 正则匹配
a = {1,2,3,4,5,6}
for k,v in pairs(a) do
print("k:"..k,"v:"..v)
end
table.insert( a, 3, "666")
for k,v in pairs(a) do
print("k:"..k,"v:"..v)
end
table.remove( a,2 )
for k,v in pairs(a) do
print("k:"..k,"v:"..v)
end
print(table.concat(a,'_',2,5))