Skip to content

Latest commit

 

History

History
52 lines (46 loc) · 2.63 KB

0X13变量与值.md

File metadata and controls

52 lines (46 loc) · 2.63 KB

0X13 变量与值

前置知识

  • 0X10 逻辑运算
  • 0X11 更复杂的函数
  • 0X12 字符串

正文

  1. 变量是一个抽象概念。它是存储各种数据值的空间。在源码中,一个变量名就表示一个变量。
  2. Lua中的变量是无类型的(或者说动态类型的),一个变量可以存储各种各样的值。
  3. 值就是程序中要处理的数据。就像我们用阿拉伯数字符号记录数,在程序源码中我们用字符的组合表示一些值。这些字符组合称为字面值。例如:10,0xa这两个都是数字十的字面值。它们表示同一个数字,只是写法不同。
  4. 表示逻辑真假的关键字true和false也是字面值。用引号表示的字符串(如'helloworld','This is a sentence')也是字面值。
  5. 很明显,数值、逻辑值和字符串的字面值相差很大。事实上Lua中也确实把它们归为不同的类别。Lua中的变量虽然没有类别,但是值可以分为不同的类别。Lua中共有8种值类型:
    • nil 空值
    • boolean 逻辑值
    • number 数字
    • string 字符串
    • function 函数
    • userdata 用户数据
    • thread 线程
    • table 表
  6. nil类型只有一个值,也就叫nil。(nil也是一个关键字。)这个值就表示“什么都没有”。虽然0在数字值中,空字符串''在字符串值中,false在逻辑值中都表示类似的意思。但是nil是没有中的没有(有点拗口)。任何一个变量,如果没有被赋值过,就是nil值。而如果给一个变量赋予这个值,也就相当于删除这个变量。假设我们从没定义过ooxx这个变量,就直接用print(ooxx)输出它。会显示nil。
  7. 要想判断两个值是否是同一个值,或者判断两个变量存储的值是否相同。可以使用等于判断或不等于判断。在判断时首先会判断两个值的类型是否相同。如果类型不同则值必然不同。如果类型相同再进行进一步的判断:
    nil~=false
    nil~=''
    0~=false
    5~='5'
    5==0x5
    以上判断的结果都是true。
  8. 预定义函数rawequal的作用和相等逻辑判断一样。它接受两个参数,当两个参数值相等的时候返回true。
    rawequal('mmm','Mmm')
    rawequal('mmww','mm'..'ww')
  9. 有一个预定义函数type可以判断值或变量所存储值的类型。它接收一个参数,用字符串返回参数的值类型。试验以下命令:
    type(nil)
    type(false)
    type('hello')
    x=65
    type(x)
    type(55)==type(0x89)
    type(5)=='number'

后续推荐

  • 0X15 类型转换