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函数声明与调用的更多相关文章

  1. JavaScript 之有趣的函数(函数声明、调用、预解析、作用域)

    前言:“函数是对象,函数名是指针.”,函数名仅仅是指向函数的指针,与其他包含函数指针的变量没有什么区别,话句话说,一个函数可能有多个名字. -1.函数声明,function+函数名称.调用方法:函数名 ...

  2. python函数声明和调用(18)

    函数是指代码片段,可以重复调用,比如我们前面文章接触到的type()/len()等等都是函数,这些函数是python的内置函数,python底层封装后用于实现某些功能. 一.函数的定义 在Python ...

  3. Javascript 函数声明、调用、闭包

    1 # Javascript 函数声明.调用.闭包 2 # 一.函数声明 3 # 1.直接声明.浏览器在执行前,会先将变量和函数声明进行提升. 4 fn(); 5 function fn () { 6 ...

  4. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  5. JS定义函数的两种方式:函数声明和函数表达式

    函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...

  6. javascript 函数声明和函数表达式的区别(学习笔记)

    javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函 ...

  7. javascript中函数声明与函数表达式的区别

    javascript中声明函数的方法有两种:函数声明式和函数表达式.究竟他们用起来有什么区别呢? 区别如下: (1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. (2) ...

  8. js 函数声明和函数表达式的区别

    javascript中声明函数的方法有两种:函数声明和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数 ...

  9. js变量和函数声明的提升

    函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部 请注意,变量赋值并没有被提升,只是声明被提升了. 函数的声明比变量的声明具有高的优先级. 下面的程序是什么结果? var foo =  ...

随机推荐

  1. 大数据除了Hadoop还有哪些常用的工具?

    大数据除了Hadoop还有哪些常用的工具? 1.Hadoop大数据生态平台Hadoop 是一个能够对大量数据进行分布式处理的软件框架.但是 Hadoop 是以一种可靠.高效.可伸缩的方式进行处理的.H ...

  2. 一个很简单的SpringCloud项目,集成Feign、Hystrix

    Feign的功能:这是个消费者,根据服务注册在Eureka的ID去找到该服务,并调用接口Hystrix的功能:熔断器,假如A服务需要调用B服务的/cities接口获取数据,那就在A服务的control ...

  3. The 2019 Asia Nanchang First Round Online Programming Contest E. Magic Master

    题目链接:https://nanti.jisuanke.com/t/41352 题目意思还是好理解的,看过的人不多,感觉是被通过量吓到了.其实就是个水题,反向模拟就好了, 用队列模拟,反向模拟,它要放 ...

  4. docker学习11-上传本地镜像到镜像仓库

    前言 在本地自己制作用过镜像后,上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境. 如果公开的话,别人也可以用你的镜像快速搭建环境,类似于 GitHub 本地代码上传到代码仓库,再从仓库拉取代 ...

  5. jq node.js bootstrap

    1.node.js 网址:https://nodejs.org/en/ 用来通过下载node.js 来引用里面的npm 来实现对外部项目的下载 1.安装nodejs 自带了npm npm instal ...

  6. Python 加入类型检查

    Python 是一门强类型的动态语言, 对于一个 Python 函数或者方法, 无需声明形参及返回值的数据类型, 在程序的执行的过程中, Python 解释器也不会对输入参数做任何的类型检查, 如果程 ...

  7. Python进阶-IV-Wrapper高阶

    一.装饰器回顾: 1.标准的装饰器示例 def trapper(func): def inner(*args, **kwargs): print('插入到被装饰函数前的功能!') res = func ...

  8. 微信小程序 组件 全局样式

    配置如下设置   /** * 组件的一些选项 */ options: { addGlobalClass: true },

  9. 37 树莓派识别opencv-dnn

    https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry-pi-using-opencv-dnn-98827255fa60 ...

  10. DIV 始终位于文档底部

    DIV 始终位于文档底部 设置body为绝对定位,最小显示高度为:100%,宽度为:100%: 设置底部显示块为绝对定位,bottom: 0,是body元素的最后一个直接子元素: 设置底部块元素同级元 ...