zoukankan      html  css  js  c++  java
  • 写 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
    
  • 相关阅读:
    java 事务
    JPA概述以及它和Hibernate之间的关系
    [转]JavaWeb之 Servlet执行过程 与 生命周期
    j2EE的web.xml详解
    安装PyTorch 0.4.0
    [转]springmvc常用注解标签详解
    hibernate的dialect大全
    Hibernate快速入门
    DBUtils使用详解
    用户密码初始化
  • 原文地址:https://www.cnblogs.com/trykle/p/14865414.html
Copyright © 2011-2022 走看看