[Lua语言基础]-4、数据类型

[复制链接]
查看1754 | 回复0 | 2021-8-17 21:37:45 | 显示全部楼层 |阅读模式
数据类型:
lua变量类型(数据类型)
nil表示空数据,等同C#的null
boolean 布尔类型
string 字符串类型。可以使用双引号也可以使用单引号
number 小数类型。注意:lua中没有整数类型。
table 类型。表示一个集合,下表序号是从1开始的(lua没有class的概念,lua的面向对象就是用‘表实现’)
function 表示有lua(或者C)编写的函数。(类似C#的方法)
userdata 表示任意存储在变量中的C数据类型。
thread 表示执行的独立线程(本质是“伪多线程”,是协程的概念),用于执行协同程序。
  1. -- 数据类型与三大运算符
  2.         --[[1:lua 的六种数据类型
  3.         2:三大运算符
  4.                 A、算术运算符
  5.                 B、关系运算符
  6.                 C、逻辑运算符--]]
  7. --[[-- 数据类型
  8. print('字符串 数据类型:'..type('你好'))
  9. print('number 数据类型:'..type('886'))
  10. print('boolean 数据类型:'..type(true))
  11. print('nil 数据类型:'..type(nil))
  12. print('table 数据类型:'..type({10,20,30}))

  13. function func()
  14.        
  15. end
  16. print('函数 数据类型:'..type(func))

  17. --]]

  18. -- 三大运算符
  19. --[[算数运算符:+ - * / %
  20.         注意 :lua 中没有自增与自减运算符
  21.        
  22. 关系运算符: <  <=  >  >=  ==  ~=
  23.         注意:1:nil 只与其自身相等。
  24.                   2:对于table、函数、userdata,lua 是作引用比较的,即:只有当他们引用同一个对象是,才认为他们相等。--]]
  25.                
  26. print('学习三大运算符---算数运算符')
  27. num1 = 10
  28. num2 = 3
  29. res1 = num1+num2                -- output:13
  30. res2 = num1-num2                -- output:7
  31. res3 = num1*num2                -- output:30
  32. res4 = num1/num2                -- output:3.3333333...
  33. res5 = num1%num2                -- output:1
  34. res6 = num1^num2                 -- output:1000
  35. print("‘加法’、‘减法’、‘乘法’、‘除法’、‘取余’、‘次幂’分别输出的结果:"..res1,' ',res2,' ',res3,' ',res4,' ',res5,' ',res6)

  36. print('学习三大运算符---关系运算符')
  37. print('num1>num2:'..tostring(num1>num2))                -- true
  38. print('num1>num2:'..tostring(num1>=num2))                -- true
  39. print('num1>num2:'..tostring(num1<num2))                -- false
  40. print('num1>num2:'..tostring(num1<=num2))                -- false
  41. print('num1>num2:'..tostring(num1==num2))                -- false
  42. print('num1>num2:'..tostring(num1~=num2))                -- true

  43. --[[-- 逻辑运算符  and  or  not
  44.     1.所有的逻辑操作符将false 、nil 视为假、其他都为真
  45.     2.对于操作符and 来说,如果它第一个操作数为假,就返回第一个操作数,不然返回第二个操作数。即:有假为假,全真为真
  46.     3:对于操作符or 来说,如果它第一个操作数为真,就返回第一个操作数,不然返回第二个操作数。即:有真为真,全假为假。--]]
  47.    
  48. print("学习三大运算符---逻辑运算符")
  49. num3 = 100
  50. num4 = 200
  51. num5 = 300

  52. -- 运算规则:"与"规则:有一个假的,则结果就是假的。全真,结果是真
  53. --             "或"规则:有个真的,则结果就是真的。全假,结果是假
  54. print(num3 > num4 and num4 < num5)        -- output:false
  55. print(num3 > num4 or num4 < num5)        -- output:false or true
  56. print(not(num3 > num4))                -- output:true


  57. -- 针对与带有“数字”与“字符串”的逻辑判断。(使用:短路规则:and  逻辑假短路规则,对于 or 逻辑真短路规则)
  58. print(not(nil))        -- output:true
  59. print(not(false))        -- output:true
  60. print(not('你好'))        -- output:false
  61. print(not(123))        -- output:false
  62. print(not(true))        -- output:false

  63. -- 需要进行“短路规则”判断的例子
  64. print(10 and 20)        -- output:20
  65. print(nil and 80)        -- output:nil
  66. print(false and 66)        -- output:false
  67. print(2 or 5)            -- output:2
  68. print(false or 10)        -- output:10

  69. print('你好' and 10)    -- output:10
  70. print(20 or 'hello')    -- output:20

  71. --[[-- 多重赋值
  72. lua中可以给多个变量同时赋值。
  73. eg:num1,num2,num3=1,2,3

  74. lua可以进行多重赋值
  75.     lua 总是将等号右边值的个数调整到与左边变量个数相一致的情况

  76. 规则:如果值的个数少于变量的个数,那么多余的变量会被赋值为nil
  77.       如果值的个数更多的话,多余的值会被忽略掉。--]]
  78.    
  79. print('lua 的多重赋值')
  80. num1,num2,num3 = 10,20
  81. print(num1,num2,num3)
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则