学lua 认识lua

注释

--单行
--[
跨行
]--

变量

a = 1 --全局变量
local a = 2 --局部变量

--块级作用域
local a = 1
local b = 2
if a == 1 then
    local b = 3
end

print(b) //2

字符串

'111'
"222"
[[333]]

字符串拼接

print("1" + "2")
--返回 3.0,这是数字
print("1" .. "2"
--返回 12,这是字符串

赋值

local a = 1
local b,c = 2,3
print(c) //3
-- 等号左边赋值右边

类型判断

local a
print(type(a))
if type(a) == "nil" then --判断时需要用字符串,type返回的就是字符串

or 取值,取先遇到的那个不是nil的值

local a = nil
local b = nil
local c = nil
print(a or b or c or 111) --111

bool

lua把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true

字典和数组

--索引从1开始
--数组
local a = {"A","B","C"}
print(a[1]) --A

--添加元素
table.insert(a, "bar")
--添加下标
b[1] = 333
print(b[1]) -- 333


--字典,lua里叫table
local b = {name="tom", age=23} --初始表,里面是key=val
print(b.name) --tom
print(b["name"]) --tom
print(b[1]) --nil

--添加任何成员
function eat1()
	print("eat1")
end

b["eat"] = eat1

func = b["eat"]
func() --eat1

遍历

for i=1,5 do
    print(i)
end
--输出
1
2
3
4
5

--步长
for i=1,10,2 do
    print(i)
end
输出
1
3
5
7
9

遍历table

a = {"one", "two", "three"}
for i, v in ipairs(a) do
    print(i, v)
end 
输出
1	one
2	two
3	three

面相对象的一些操作

--静态类
local obj = {}

obj.age = 1

function obj:hello(name)
    print(name)
    print(self.age)
end

obj.age = 2
obj:hello("tom") --tom 2
obj.hello("tim") -- nil nil --使用.调用函数无法得到self

-- 实例类
Person = {age = 0, name = nil} -- 元类

-- 基础类方法 new
function Person:new(name, age)
  local o = {}
  setmetatable(o, self)
  self.__index = self 
  self.name = name
  self.age = age
  return o
end

-- 方法
function Person:say ()
  print("我是 ", self.name)
end

-- 创建对象
sam = Person:new("张三1",10)
sam:say()
sam = Person:new("张三2",10)
sam:say()

异常捕获

function test()
    print(nil .. "1")
end

local status, err = pcall(test)
print(err)

抛出异常

error('我有一个异常') 

用goto实现continue

for i = 1,10 do
   if i > 5 then
      goto continue
   end
   print(i)
   ::continue::
end
posted @ 2021-06-09 09:00  trykle  阅读(119)  评论(0编辑  收藏  举报