Lua点号和冒号区别】的更多相关文章

定义的时候冒号默认接收self参数调用的时候冒号默认传递调用者自己为参数而句号要显示传递或接收self参数 -- 例如:句号定义,需要显示传递或接收 a = { x = } function a.fun(self) print(self.x) end a.fun(a)--输出1,将a自己做为参数传给fun函数的self 这样调用要传递self,比较麻烦,所以lua给一个方便的方法将函数定义改成冒号,就可以省略self参数 function a:fun() print(self.x) end a.…
Student = {}; Student.__index = Student; function Student:new(name, age) local temp = {}; setmetatable(temp, Student); temp.name = name; temp.age = age; return temp; end function Student:info() print(self.name, self.age); --运行stu2时会报错 -- print("name:…
冒号的作用:1.定义函数时,给函数添加隐藏的第一个参数 self2.调用函数时,默认把当前调用者作为第一个参数传递进去 如 a:b(c) 可以理解为 a.b(a, c) 以下是用点号的定义和调用函数的方式: Song = { name = "", timeLength = , } function Song.SetName(name) Song.name = name; end 以上的函数定义可以使可以,但是有一个很大的问题,思考10s为什么? 假如有以下逻辑: ChineseSong…
1.初学者最易混乱Top1——调用函数时用点号还是用冒号? 我们来看看下面的两句代码: mSprite.setPosition(, ); mSprite:setPosition(, ); 对于初次接触Lua的朋友来说,这简直就是噩梦,为嘛函数的调用有两种形式,是让我们随便挑的意思吗? 这两种形式是有区别的,区别很大,但只有一个.不过,暂时不解释,后面再介绍. 2.最简单的类 我们先来看看简单的,来创建一个“类”试试,如下代码: TSprite = { x = , y = , } function…
首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Class   function Class:new(x,y)     local temp = {}     setmetatable(temp, Class)     temp.x = x     temp.y = y     return temp end   function Class:tes…
首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Class   function Class:new(x,y)     local temp = {}     setmetatable(temp, Class)     temp.x = x     temp.y = y     return temp end   function Class:tes…
lua 中pairs 和 ipairs区别 标准库提供了集中迭代器,包括迭代文件每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的 (string.gmatch)等等.LUA手册中对与pairs,ipairs解释如下: ipairs (t) Returns three values: an iterator function, the table t, and 0, so that the construction for i,v…
1,多个参数传递用map或实体封装后再传给myBatis, mybatis学习$与#号取值区别 #{} 1.加了单引号,  2.#号写是可以防止sql注入,比较安全 select * from user where username=#{username} and password=#{password}  变成 ...where username=‘张三’ and password=‘123’ ${}  2.没有加单引号  2.${}写法无法防止sql注入(模湖查询时用‘%${username…
由于LUA中是模拟类,没有class, 所以这里是使用.号来访问实例的成员 re.SetActive(re, re.activeSelf == false); 而冒号:  则是种语法糖,省略了上面代码中的第一个参数 re:SetActive(re.activeSelf == false); 也就是说:lua中对象.方法,只能找到方法,对象只能是类型,即使传入的是对象,所以等效于确定了单纯的方法! 所以冒号的方法,模拟了对象访问自己方法的思想,但本质不是! 记住:lua没有面向对象!…
ipairs 和pairs在lua中都是遍历tbale的函数但是两者有区别 1.pairs遍历table中的所有的key-vale 而ipairs会根据key的数值从1开始加1递增遍历对应的table[i]值 a = {[] = ] = ] = ] = ] = "a5",} for key, value in ipairs(a) do print(key, value) end 结果: a1 a2 a3 a = {[] = ] = ] = ] = ] = "a5",…