Lua 学习_3 函数 及 函数库

                                     Lua 函数  及 函数库


函数定义:

-- 函数定义  
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))

高阶函数 :

  •    第一类     first class; 可以把  函数作为 参数 进行传递
--局部函数
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))

 

 

 

                                              Lua 的运算符


  •  #  求长度  (下标要连续的 整数才可以 求出 真正的长度
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)

Lua 学习_3 函数 及 函数库_第1张图片

 

 

 

 

                                                          lua 提供的  函数库 


string 标准库

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.  正则表达式 正则匹配

 

table 标准库

 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))

 

 

你可能感兴趣的:(Lua)