Lua函数声明与调用
lua编程中,我们经常也会遇到函数的声明定义和调用。
【1】lua中函数定义与调用的方法
lua有两种函数定义和调用的方法(本质都是用属性,方式不同而已):
(1)点号形式
(2)冒号形式
两种方法的联系:
(1)相同点:本质都是用属性方式
(2)不同点:用冒号形式定义的函数默认会有一个参数self。self实质指向表本身(类似于C++中的this)。
【2】两种方法的定义调用实例对比
综上可知,两种方式会有四种组合需求:
(1)点号定义 && 点号访问
_M = {value = }
function _M.set_value(_M, new_value)
_M.value = new_value
end
function _M.print_sum(_M)
print(_M.value + _M.value)
end
print(_M.value)
_M.set_value(_M, )
print(_M.value)
_M.print_sum(_M)
--[[
10
20
40
--]]
(2)冒号定义 && 冒号访问
_M = {value = }
function _M:set_value(new_value)
self.value = new_value
end
function _M:print_sum()
print(self.value + self.value)
end
print(_M.value)
_M:set_value()
print(_M.value)
_M:print_sum()
--[[
10
20
40
--]]
(3)点号定义 && 冒号访问
_M = {value = }
function _M.set_value(_M, new_value)
_M.value = new_value
end
function _M.print_sum(_M)
print(_M.value + _M.value)
end
print(_M.value)
_M:set_value()
print(_M.value)
_M:print_sum()
--[[
10
20
40
--]]
(4)冒号定义 && 点号访问
_M = {value = }
function _M:set_value(new_value)
self.value = new_value
end
function _M:print_sum()
print(self.value + self.value)
end
print(_M.value)
_M.set_value(_M, )
print(_M.value)
_M.print_sum(_M)
--[[
10
20
40
--]]
Good Good Study, Day Day Up.
顺序 选择 循环 总结
Lua函数声明与调用的更多相关文章
- JavaScript 之有趣的函数(函数声明、调用、预解析、作用域)
前言:“函数是对象,函数名是指针.”,函数名仅仅是指向函数的指针,与其他包含函数指针的变量没有什么区别,话句话说,一个函数可能有多个名字. -1.函数声明,function+函数名称.调用方法:函数名 ...
- python函数声明和调用(18)
函数是指代码片段,可以重复调用,比如我们前面文章接触到的type()/len()等等都是函数,这些函数是python的内置函数,python底层封装后用于实现某些功能. 一.函数的定义 在Python ...
- Javascript 函数声明、调用、闭包
1 # Javascript 函数声明.调用.闭包 2 # 一.函数声明 3 # 1.直接声明.浏览器在执行前,会先将变量和函数声明进行提升. 4 fn(); 5 function fn () { 6 ...
- Js 变量声明提升和函数声明提升
Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...
- JS定义函数的两种方式:函数声明和函数表达式
函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...
- javascript 函数声明和函数表达式的区别(学习笔记)
javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函 ...
- javascript中函数声明与函数表达式的区别
javascript中声明函数的方法有两种:函数声明式和函数表达式.究竟他们用起来有什么区别呢? 区别如下: (1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. (2) ...
- js 函数声明和函数表达式的区别
javascript中声明函数的方法有两种:函数声明和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数 ...
- js变量和函数声明的提升
函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部 请注意,变量赋值并没有被提升,只是声明被提升了. 函数的声明比变量的声明具有高的优先级. 下面的程序是什么结果? var foo = ...
随机推荐
- tp5.0在控制器中和在模板中调用配置文件中的常量
框架配置文件config.php中定义 'view_replace_str' => [ '__MEMBER__'=> '/static/member', '__uplo ...
- jqmobile FAQ
1. 用JavaScript弹出对话框 $("#msgBox").popup("open"); <div data-role="popup&qu ...
- centos自动同步服务器时间
原文:https://my.oschina.net/yysue/blog/1628733 1.安装ntpdate yum install ntpdate -y 2.测试是否正常 ntpdate cn. ...
- mongo find 时间条件过滤
db.order.find({"order_time":{"$gte": new Date("Tue Jan 01 2017 00:00:00 GMT ...
- Linux传输指令-scp
本地传到远程 scp -rf bt.plist cjp@centos:~/下载 从远程下载到本地 scp -rf cjp@centos:~/下载 ~ 参数详解 参数 描述 -a 尽可能将档案状态.权限 ...
- Java多线程编程核心技术-第1章-Java多线程技能-读书笔记
第 1 章 Java 多线程技能 本章主要内容 线程的启动 如何使线程暂停 如何使线程停止 线程的优先级 线程安全相关的问题 1.1 进程和多线程的概念及线程的优点 进程是操作系统结构的基础:是一次程 ...
- testlink 1.9.13之后版本,将动作默认显示
最近升级了testlink,从低版本升级到1.9.14,而作为用户来说,改变了用户习惯,感觉不太好,其中有一个用户习惯是,点击某一条用例或测试集时,要点击动作才能显示实际的内容,如下: 每次都点击很不 ...
- 【Linux】netstat命令
https://www.cnblogs.com/ftl1012/p/netstat.html这个讲的不错 https://www.linuxprobe.com/netstat-common-metho ...
- 转载:tensorflow保存训练后的模型
训练完一个模型后,为了以后重复使用,通常我们需要对模型的结果进行保存.如果用Tensorflow去实现神经网络,所要保存的就是神经网络中的各项权重值.建议可以使用Saver类保存和加载模型的结果. 1 ...
- ##ant 打包apk
ant 打包apk 1. 参考: Android Ant 批量多渠道打包实例 单个渠道类似操作,只不过不用修改build.xml文件 2. 修改ant debug的包签名,使用和release版本相同 ...