lua(一)基本语法及数据类型

﹏ヽ暗。殇╰゛Y 2022-05-14 02:51 338阅读 0赞
  1. lua -i或者lua进入lua控制台

    [xuhaixing@localhost lua]$ lua -i
    Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio

  1. [xuhaixing@localhost lua]$ lua
  2. Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
  3. >

2.打印输出

a. 控制台方式

  1. > print("hello world")
  2. hello world
  3. >

b. 文件方式

  1. [xuhaixing@localhost lua]$ lua helloWorld.lua
  2. helloworld

c. ./执行

  1. #!/usr/bin/lua
  2. print("helloworld")
  3. [xuhaixing@localhost lua]$ chmod u+x hello.lua
  4. [xuhaixing@localhost lua]$ ./hello.lua
  5. helloworld

3.注释

a.单行注释

  1. #!/usr/bin/lua
  2. print("helloworld")
  3. --print("world good")
  4. [xuhaixing@localhost lua]$ ./hello.lua
  5. helloworld

b.多行注释

  1. #!/usr/bin/lua
  2. print("helloworld")
  3. --print("world good")
  4. --[[
  5. print("嘻嘻哈哈")
  6. print("你好")
  7. --]]
  1. 没有声明的变量是全局变量,直接访问返回nil

    print(b)
    nil
    b = ‘1’
    print(b)
    1
    local a = 1
    print(a)
    nil

  1. lua数据类型 8种

    nil,boolean,number,string,userdata,function,thread,table

    a. nil

    print(type(a))
    nil

    对于全局变量或者table, nil还有一个删除的作用

    table2 = {key1=’a’,key2=’b’,key3=’c’}
    for k, v in pairs(table2) do print(k..’—-‘..v) end
    key1—-a
    key3—-c
    key2—-b
    table2.key1=nil
    for k, v in pairs(table2) do print(k..’—-‘..v) end
    key3—-c
    key2—-b

    nil做比较时,需要加上引号

    print(type(a))
    nil
    print(type(a)==nil)
    false
    print(type(type(a)))
    string
    print(type(a)==’nil’)
    true

b. boolean

lua把nil和false 当作false,其他都是真

  1. > if false or nil then print('至少有一个是true') else print("false 和nill 都为false") end
  2. false nill 都为false
  3. > if 'a' then print('至少有一个是true') else print("false 和nill 都为false") end
  4. 至少有一个是true

c. number

  1. 双精度类型,lua种只有这一种数字类型
  2. > print(type(2))
  3. number
  4. > print(type(2.0))
  5. number
  6. > print(type(2.0e+10))
  7. number

d. string字符串

  1. > print("aaa")
  2. aaa
  3. > print('aaa')
  4. aaa
  5. > print([[aaa]])
  6. aaa

字符串做算术运算时,会尝试转换成数字

  1. > print('1'+'3')
  2. 4
  3. > print('1'+3)
  4. 4
  5. > print('1'+'a')
  6. stdin:1: attempt to perform arithmetic on a string value
  7. stack traceback:
  8. stdin:1: in main chunk
  9. [C]: ?

字符串连接 ..

  1. > print('1'..'2'..'a')
  2. 12a

e. table

  1. table的下标从1开始
  2. > table1 = {'a','b','c'}
  3. > for k, v in pairs(table1) do print(k..'---'..v) end
  4. 1---a
  5. 2---b
  6. 3---c
  7. 可以通过\[\] 下标访问
  8. > print(table1[1])
  9. a

可以自己指定key

  1. > table2 = {key1='a',key2='b',key3='c'}
  2. > for k, v in pairs(table2) do print(k..'---'..v) end
  3. key1---a
  4. key3---c
  5. key2---b

通过.下标访问

  1. > print(table2.key1)
  2. a
  3. > print(table2[key1])
  4. nil

funcation函数

  1. function func1(n)
  2. if n==0 then
  3. return 1
  4. else
  5. return n * func1(n-1)
  6. end
  7. end
  8. print(func1(3))
  9. func2=func1
  10. print(func2(4))
  11. [xuhaixing@localhost lua]$ lua function.lua
  12. 6
  13. 24
  14. [xuhaixing@localhost lua]$ cat function2.lua
  15. function testFun(table,fun)
  16. for k, v in pairs(tab) do
  17. print(fun(k,v))
  18. end
  19. end
  20. tab={key1="aaa",key2="bbb"};
  21. testFun(tab,
  22. function(k,v) --匿名函数
  23. return k.."--"..v
  24. end
  25. )
  26. [xuhaixing@localhost lua]$ lua function2.lua
  27. key1--aaa
  28. key2--bbb

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTIzMjY0NjI_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,338人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Lua02-基本语法

    标示符命名规则 Lua 标示符用于定义一个变量,函数获取其他用户定义的项。 标示符以一个字母 A 到 Z 或 a 到 z 或下划线 \_ 开头后加上0个或多个

    相关 Lua 数据类型

    Lua是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。 Lua中有8个基本类型分别为:nil、boolean、number、