美文网首页
Lua学习笔记(2)——表达式

Lua学习笔记(2)——表达式

作者: 嘿小药罐 | 来源:发表于2017-03-16 15:23 被阅读4次

    算术操作符

    1.常规的算术操作符:二元的 “ + "," - "," * "," / "," ^ ", " % ";一元的:“-”(负号)

    2.取模:a%b = a - floor ( a / b ) * b。对于整数来说通常是有意义的。而对于实数则可能有其他用途:x%1的结果是x的小数部分,而x-x%1结果是其整数部分。

    x-x%0.01是x精确到小数点后两位的结果

    关系操作符

    1.关系操作符:>, <, <=, >= , == , ~= 。

    2.所有关系操作符的运算的结果都是true或false。

    3.任意两个值需要类型相同,值相等才会相等。类型不同Lua就人为它们不相等。

    4.对于table,userdata和函数,作引用比较。即,当它们引用同一个对象时才认为它们相等。

    引用比较

    5.比较两个不同类型值时需要注意,字符串是按字母次序作比较的。例如:2<15 -> true,"2"<"15" -> false(因为是按照字母次序来作比较的)。

    逻辑操作符

    1.逻辑操作符:and, or ,not

    2.false和nil视为假,其他任何东西视为真。

    3.and,第一个操作数为假时返回第一个操作数,反之返回第二个操作数。

    4.or,第一个操作数为真时返回第一个操作数,反之返回第二个操作数。

    and   or

    5.and 和 or 都使用“短路求值(short-cut evaluation)”,即只会在需要时才去评估第二个操作数。短路求值可以确保像(type(v) == "table" and v.tag == "h1" )这样的表达式不会导致运行时错误(当v不是一个table时,Lua不会对v.tag进行求值评估)。

    选出数字x和y中的较大者

    6.x = x or v 等价于 if not x then x = v end(当x没有初始化时,将其设为一个默认值v)。

    7.not,只返回true或false。

    not

    优先级

    操作符的优先级

    1.指数操作符“^”和连接操作符“..”是“右结合”,其他所有操作符为“左结合”。

    等价式

    构造式

    1.构造式是用于创建和初始化table的表达式。

    2.最简单的构造式是空构造式 {} ,用于创建一个空table,或者初始化数组。

    初始化数组(序列或列表)

    3. a = {x = 10, y = 20}  等价于  a = {}; a.x = 10; a.y = 20;

    4.table创建后可以增删改:

    table的增删改

    5.链表代码:

    链表(从标准输入中读取,按每行相反的次序存储到一个链表中,类似于栈) 遍历链表并打印

    6.记录风格的初始化和列表风格的初始化混合在一个构造式中:

    混合构造式 每个polyline[i]元素都是一个table,表示一条记录

    7.Lua提供一种通用的格式,允许在方括号之间,显式地用一个表达式来初始化索引值。

    更通用的格式

    8. { x = 0, y=0 } 等价于 { ["x"] = 0, ["y"] = 0 }

    9.{"r", "g","b"} 等价于 { [1] = "r", [2] = "g", [3] = "b"}

    10.构造式中可以用分号代替逗号,区分构造式中不同的成分:

    将列表部分与记录部分区分开

    相关文章

      网友评论

          本文标题:Lua学习笔记(2)——表达式

          本文链接:https://www.haomeiwen.com/subject/slsdnttx.html