前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Lua函数的冒号调用和点调用

Lua函数的冒号调用和点调用

作者头像
bering
发布于 2020-03-19 02:04:28
发布于 2020-03-19 02:04:28
3.4K00
代码可运行
举报
文章被收录于专栏:游戏开发之旅游戏开发之旅
运行总次数:0
代码可运行

lua冒号函数的定义和调用

冒号定义函数中的self指向函数所属表对象,即self是table类型,通过self表可以:访问挂载在该表下的所有冒号定义函数 如,有定义A={},A:b() A:c();函数b,c都是冒号定义函数,在b,c函数内部self是地址指向A的表,在b函数中可以通过self:c()来调用c函数,同理在c函数中也可以通过self:b()来调用b函数 代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
local tb={name="tb"}
function tb:func1()
  print("调用func1")
end

function tb:func2()
  print("调用func2")
end

function tb:test()
  self:func1()
  self:func2()
end

tb:test()
--调用func1
--调用func2

lua点函数的定义和调用

总之lua点定义的函数中self=nil,不像冒号定义函数那样可以self指向函数所属对象

点调用冒号定义函数

点调用冒号定义函数,第一个参数传递给self,调用无参时,self=nil

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
local tb={name="tb"}
function tb:func1(parm1,parm2)
  print("self=",self,"self name=",self.name)
  print("parm1=",parm1)
  print("parm2=",parm2)
end
print("------------点调用冒号定义函数---------------")
--点调用冒号定义函数,第一个参数传递给self
tb.func1("第一个参数","第二个参数")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输出《 
------------点调用冒号定义函数---------------
self=	第一个参数	self name=	nil
parm1=	第二个参数
parm2=	nil

冒号调用点定义函数

冒号调用点定义函数,调用者对象表传递给点定义函数的第一个参数,点定义函数内部self=nil

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
local tb={name="tb"}
function tb.func2(parm1,parm2)
  print("self=",self)
  print("parm1=",parm1)
  print("parm2=",parm2)
end
print("------------冒号调用点定义函数---------------")
--冒号调用点定义函数,调用者对象表传递给点定义函数的第一个参数
tb:func2("第一个参数","第二个参数")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输出《
------------冒号调用点定义函数---------------
self=	nil
parm1=	table: 0x000393c0
parm2=	第一个参数

all:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
local tb={name="tb"}
function tb:func1(parm1,parm2)
  print("self=",self,"self name=",self.name)
  print("parm1=",parm1)
  print("parm2=",parm2)
end

function tb.func2(parm1,parm2)
  print("self=",self)
  print("parm1=",parm1)
  print("parm2=",parm2)
end

print("------------冒号调用冒号定义函数---------------")
--冒号调用冒号定义函数
tb:func1("第一个参数","第二个参数")

print("------------点调用冒号定义函数---------------")
--点调用冒号定义函数,第一个参数传递给self
tb.func1("第一个参数","第二个参数")

print("------------冒号调用点定义函数---------------")
--冒号调用点定义函数,调用者对象表传递给点定义函数的第一个参数
tb:func2("第一个参数","第二个参数") 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Lua学习笔记:在Lua中调用C/C++函数示例
本文会通过一些示例展示如何用lua调用C/C++传递过来的函数,并辅以部分解释语句:
晨星成焰
2024/09/10
3320
Lua学习笔记:在Lua中调用C/C++函数示例
lua--迭代器、模块、元表
定义迭代器语法: function 迭代器名(终止值参数,初始值参数) end
aruba
2022/06/22
5150
lua--迭代器、模块、元表
【小白学Lua】之Lua变长参数和unpack函数
  Lua的变长参数和unpack函数在实际的开发中应用的还挺多的,比如在设计print函数的时候,需要支持对多个变量进行打印输出,这时我们就需要用到Lua中的变长参数和unpack函数了。
马三小伙儿
2018/12/21
4.1K0
Java与lua互相调用简单教程
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/09/07
1.9K0
Java与lua互相调用简单教程
【Unity游戏开发】浅谈Lua和C#中的闭包
  目前在Unity游戏开发中,比较流行的两种语言就是Lua和C#。通常的做法是:C#做些核心的功能和接口供Lua调用,Lua主要做些UI模块和一些业务逻辑。这样既能在保持一定的游戏运行效率的同时,又可以让游戏具备热更新的功能。无论我们有意或者无意,其实我们经常会在Unity游戏开发中使用到闭包。那么,马三今天就要和大家来谈谈Lua和C#中的闭包,下面首先让我们先来谈谈Lua中的闭包。
马三小伙儿
2018/09/12
2.5K0
Lua/luajit 点与冒号的区别
无论在定义method或 function时用的点号, 还是冒号, Lua/Luajit 中最终是以使用时的点号或冒号为准, 并且Object.method(self, arg...) 相当于 Object:method(arg...), 即冒号会自动传入self 到第一个参数, 这样显得更简洁优雅.
sunsky
2020/08/20
8350
Lua基础教程1(长文预警)
推荐一个快速学习LUA的网站 ,这个网站的内容写的短有些细节忽略了。有时间最好还是要看下面推荐的书 推荐书籍 Programming in Lua third edition.pdf
keyle
2024/11/01
680
Lua基础教程1(长文预警)
震惊,Java+ lua = 王炸
在某些业务场景下,我们可能会遇到 lua 中要调用 java 代码情况,当然这个用 JNI 肯定是可以做到的,但是有更加方便的办法:LuaJavaBridge(LuaJava)和 LuaJ。
Leetcode名企之路
2022/12/28
3860
震惊,Java+ lua = 王炸
Lua基础教程2(长文预警)
这一篇记录一些关于Lua的更深入一些的东西主要是table的使用。但是不涉及IO,Debug,垃圾回收,OOP,数据库访问。这些东西我觉得可以单独放在一个专题写。
keyle
2024/11/01
830
Lua基础教程2(长文预警)
Lua学习笔记
--Lua笔记-- --0.Lua开篇-- --http://www.cnblogs.com/stephen-liu74/archive/2012/06/11/2403210.html-- --1.Lua基础知识-- --[[ 通过dofile()方法引用其他Lua文件中的函数 在Lua中全局变量不需要声明,直接赋值即可。如果直接访问未初始化的全局变量,Lua也不会报错,直接返回nil。如果不想再使用该全局变量,可直接将其置为nil。 命令行用法如下: lua [options] [lua-scr
_gongluck
2018/03/08
3.1K0
lua语言:类型,基本语法,函数
两个取值 false 和 true。但要注意 Lua 中所有的值都可以作为条件。在控制结构的条 件中除了 false 和 nil 为假,其他值都为真。所以 Lua 认为 0 和空串都是真。
立羽
2023/08/24
4620
Lua学习笔记:C/C++中调用Lua函数示例
在学习了Lua中调用C/C++ 函数后,不免令人好奇,是否可以在Lua中定义一些函数来让C/C++来调用?我们甚至可以封装了C/C++的函数库供Lua模块化加载后再传递给需要的C/C++项目调用
晨星成焰
2024/09/11
1890
Lua学习笔记:C/C++中调用Lua函数示例
lua--数据类型、变量、循环、函数、运算符的使用
lua是一种轻量级脚本语言,由c语言编写,设计lua的初衷是为了:嵌入到应用程序中,提供灵活的扩展和定制化功能 lua官网:https://www.lua.org/ 可以从中下载安装lua
aruba
2022/06/22
1.3K0
lua--数据类型、变量、循环、函数、运算符的使用
Lua 语法基础 | Nmap 脚本
and break do else elseif end false goto for function if in local nil not or repeat return then true until while
意大利的猫
2020/08/20
2.1K0
Lua热更新
此文章部分内容和思维导图来源于唐老狮相关Lua课程,通过Vistual Studio Code语法测试,如有问题,请在以下留言
七鳄不是鳄
2023/02/27
3.5K0
Lua热更新
lua
数学库由算术函数的标准集合组成,比如三角函数库(sin, cos, tan, asin, acos, etc.), 幂指函数(exp, log, log10),舍入函数(floor, ceil)、max、min,加上一个变量 pi。数学 库也定义了一个幂操作符(^)。 所有的三角函数都在弧度单位下工作。(Lua4.0 以前在度数下工作。)你可以使用 deg 和 rad 函数在度和弧度之间转换。
radaren
2018/08/28
2.2K0
3.关于python函数,以及作用域,递
现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码。
py3study
2020/01/03
5960
lua实例教程_lua教程网
1.进入Lua官网:http://www.lua.org——下载Lua 2.下载文件【 lua-5.3.4_Win64bin.zip 】 3.创建一个空文件夹“Lua”并在其中解压【 lua-5.3.4_Win64bin.zip 】压缩文件 4.复制“Lua”文件夹到一个不会被删除的地方, 5.路径最好不要是中文。( 推荐选择C盘 ) 6.将此路径加入到环境变量中 7.cmd 中输入lua 查看安装是否成功
全栈程序员站长
2022/11/01
2K0
lua实例教程_lua教程网
Lua语言_lua基本语法
Lua [1] 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University ofRio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique deFigueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。 Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
全栈程序员站长
2022/11/19
3.3K0
Lua语言_lua基本语法
c++ 11 bind_箭头函数可以用bind吗
可以将bind函数看作是一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。 调用bind的一般形式:auto newCallable = bind(callable,arg_list);`
全栈程序员站长
2022/11/17
7780
相关推荐
Lua学习笔记:在Lua中调用C/C++函数示例
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文