linux应用参数 冒号,Lua-面向对象中函数使用时冒号(:)和点(.)的区别

Lua-面向对象中函数使用时冒号(:)和点(.)的区别,我们先来看一段简单的代码:

local Animal ={}functionAnimal:Eat( food )print("Animal:Eat", self, food)end

functionAnimal.Sleep( time )print("Animal.Sleep", self, time)endAnimal:Eat("grass")

Animal.Eat("grass")

Animal:Sleep(1)

Animal.Sleep(1)

输出结果为:

Animal:Eat table: 0x7f8421c07540 grass

Animal:Eat grassnilAnimal.Sleepniltable: 0x7f8421c07540

Animal.Sleepnil 1

由此可见,

定义:

在Eat(冒号函数)内部有一个参数self,在Sleep(点函数)内部没有参数self;

调用:

用冒号(:)调用函数时,会默认传一个值(调用者自身)作为第一个参数;

用点(.)调用函数时,则没有;

-- 如果要使结果一致,则:

Animal:Eat("grass")

Animal.Eat(Animal,"grass")

Animal:Sleep()

Animal.Sleep(Animal)

输出结果:

Animal:Eat table: 0x7f8421c07540 grass

Animal:Eat table: 0x7f8421c07540 grass

Animal.Sleepniltable: 0x7f8421c07540

Animal.Sleepnil table: 0x7f8421c07540

-- 我们为什么可以用.和:来定义函数

function Animal.Sleep( time ) end

-- 这种写法是一种语法糖(syntactic sugar),它的原型是:

Animal.Sleep = function ( time ) end

用双冒号(:)时,也是一种语法糖,实际上默认传递一个self(Animal)参数:

function Animal:Eat( food ) end

等价于

function Animal.Eat( self, food ) end

可参考Lua函数定义:

http://www.lua.org/manual/5.2/manual.html#pdf-next

3.4.10 – Function Definitions

The syntax for function definition is

functiondef ::= function funcbody

funcbody ::= ‘(’ [parlist] ‘)’ block end

The following syntactic sugar simplifies function definitions:

stat ::= function funcname funcbody

stat ::= local function Name funcbody

funcname ::= Name {‘.’ Name} [‘:’ Name]

The statement

function f () body end

translates to

f = function () body end

The statement

function t.a.b.c.f () body end

translates to

t.a.b.c.f = function () body end

The statement

local function f () body end

translates to

local f; f = function () body end

not to

local f = function () body end

Lua 的详细介绍:请点这里

Lua 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

欧框语言框架标准C2,CEFR欧洲语言共同参考框架

http://www.v4.cc/News-3997660.htmlCEFR全称是Common European Framework of Reference for Languages,是由欧洲语言测试者协会(ALTE)于2001年首次发布的一套建议标准,用来评估语言学习者在所学语言的成就,同时也给予一个教育上的评估方针。…

c语言简短的泡沫排序法编程,冒泡排序--简单(c语言)

//// main.cpp// bubble//// Created by duanqibo on 2019/7/17.// Copyright © 2019年 duanqibo. All rights reserved.// 冒泡排序 c语言#include #include #include #include #define N 4typedef struct student{int num;char name[20];char sex[2];int age;}stu[…

算法与数据结构c语言版PPT,C语言算法与数据结构.ppt

C语言算法与数据结构.ppt第十二章 算法与数据结构12.1 算法的基本概念,该节知识点所占试题比重为12,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解。历次试题分值在04分之间波动。,12.1.1 考点1 算法的定义,算法是…

android工程师饱和,Android开发是否饱和了?你所不了解的Android开发

原标题:Android开发是否饱和了?你所不了解的Android开发Android开发是否饱和了?是很多人关心的问题,对于想要从事Android开发的人更是头等大事。如今,就业难成横亘在求职者面前的难题,而与 之相反是互联网行业的高薪多…

android 获取wifi的加密类型,wifi加密类型

最近开发wifi方面的功能,需要根据wifi加密类型来展现UI。遇到了一个比较蛋疼的问题:如何判断wifi加密类型wifi的管理需要通过WifiManager来操作WifiManager mWifiManager (WifiManager) context.getSystemService(Context.WIFI_SERVICE);开启和关闭wifi…

android底部导航栏软件,三步搞定android应用底部导航栏

很多android应用底部都有一个底部导航栏,方便用户在使用过程中随意切换。目前常用的做法有三种:一种是使用自定义tabHost,一种是使用activityGroup,一种是结合FrameLayout实现。笔者再做了多款应用后,为了节约开发周期&#xff0c…

android 屏幕飘动,Android自定义View实现飘动的叶子效果(三)

上一篇对自定义View及一些方法有所了解,下面做一个简单的叶子飘动的例子主要技术点1、添加背景图片canvas.drawBitmap()2、Matrix动画类3、Matrix添加到画布上步骤1、添加黄色背景颜色public LeafView(Context context, AttributeSet attrs) {super(context, attrs)…

html 美化input file,Input[type=”file”] 显示效果美化方法 | 智慧宫

Html中input可以作为上传图片代码如下但是演示非常不好看,下面做一番美化处理,效果如下:文件上传美化前后对比美化方法隐藏 input 标签使用 label 标签在input标签位置显示;用js获取 input 中上传的文件名称,并在 labl…

html 进入效果,用css3实现简单的进入效果

这是一个比较简单的小例子,实现如图效果仅仅用css3就可以达到这种效果,代码如下:.div {position: relative;top: 20px;height: 300px;width: 200px;margin: 0 auto;background: blue;float: left;margin-left: 20px;}.div2 {position: relati…

计算机专业中agp是什么意思,计算机中AGP是什么意思及其特性介绍

AGP (Accelerated Graphic Ports 或者 Advanced Graphic Ports) 是当前已经被淘汰的图形系统接口。这项技术始于十四年以前,当时的3D图形加速技术开始流行并且迅速普及,为了使系统和图形加速卡之间的数据传输获得比PCI总线更高的带宽,AGP便应…

计算机目标导学方法,计算机教学计划

计算机教学计划信息技术课程是一门特殊比较的学科,操作性较强,大部分学生对此相当感兴趣。 以下是为大家整理的计算机教学计划,希望对你们有所帮助!篇一:计算机教学计划本学期我任教11级护理班的计算机应用基础课程教学…

java 网络编程connection timed out是什么意思_什么?听说这四个概念,很多 Java 老手都说不清...

Java 是很多人一直在用的编程语言,但是有些 Java 概念是非常难以理解的,哪怕是一些多年的老手,对某些 Java 概念也存在一些混淆和困惑。所以,在这篇文章里,会介绍四个 Java 中最难理解的四个概念,去帮助开发…

assembly 输出ab中所有数_.NET Core中批量注入Grpc服务

(给DotNet加星标,提升.Net技能)转自:张子浩cnblogs.com/ZaraNet/p/12167517.htmlGRPC 是谷歌发布的一个开源、高性能、通用RPC服务,尽管大部分 RPC 框架都使用 TCP 协议,但其实 UDP 也可以,而 gRPC 干脆就用了 HTTP2。…

kdj指标主要看哪个值_悟空CRM:在线crm主要看这两个指标,都非常重要!

crm对很多企业都非常重要,可是很多人并不明白crm到底重要在哪些地方?比如说很多人都比较喜欢使用这个系统,尤其是在线crm。 在线crm主要看这两个指标,都非常重要,这两个指标如果上去了,基本上对企业的运营都…

鼠标控制视角wasd移动_绝地求生:为什么控制方向键是WASD?网友:就不能是其他键位吗?...

哈喽,大家好这里是大能有话说,现在的网络游戏越来越发达,每个游戏的玩法有非常多种,但是不知道小伙伴们有没有发现,在需要控制方向的情况下,咱们用的都是W、A、S、D这四个键,那为什么偏偏就一定…

javawed商店商品结算_微信小商店搭建

点击上方蓝字关注我吧个人也能搭建微信小商店了,直接下单,微信立马到账,方便快捷,对于个人来说,在网上卖东西,有了一个利于客户下单的渠道。1、微信小商店介绍为了进一步降低进入小程序生态经营和卖货的门槛…

图片还原去遮挡_斗罗:这届coser太强,动画刚播出两天,战损三哥就被还原了...

斗罗大陆作为玄机旗下的热门动画,不仅多次登上热搜,引发漫迷热议,还吸引了众位coser的注意力。作品从开播到现在,基本上绝大多数角色都曾被coser还原过。对于里面的热门角色,例如史莱克七怪,几乎是每更换一…

熟悉html css,编写HTML和CSS的前端开发中不一定熟悉JavaScript

原标题:编写HTML和CSS的前端开发中不一定熟悉JavaScript作为前端开发人员,HTML、css、Java是必备的知识技能,但是现实工作工作中并非所有的前端都知道Java,根据外国一个网站的匿名调查发现,有17%的开发人员不知道Java&…

fastapi 传输文件存文件_揭秘|国内影视文件传输的真相,跨境文件传输更不简单...

2020年影视行业至黑时刻总算要过去了,下半年复苏迹象已经显现。作为影视行业的基础搬运工,文件传输贯穿始末。无论是TB级原始素材还是后期协作的大文件,多团队高效协作必然要考虑大文件传输这个基础工具。在选择文件传输软件这件事上&#xf…

计算机考csp200分啥水平,计算机与信息工程学院成功举办第20次CCF CSP认证考试

2020年9月13日,计算机与信息工程学院在计算机大楼201举办第二十次CCF CSP认证考试。这是计算机与信息工程学院2019年12月与中国计算机学会签署协议、河南大学正式成为CSP认证考点以来,举办的首次CCF CSP认证考试。本次认证考试历时四个小时,共…