zoukankan      html  css  js  c++  java
  • lua --- 点号 和 冒号

    冒号的作用:
    1、定义函数时,给函数添加隐藏的第一个参数 self
    2、调用函数时,默认把当前调用者作为第一个参数传递进去

    如 a:b(c) 可以理解为 a.b(a, c)

    以下是用点号的定义和调用函数的方式:

    1 Song = 
    2 {
    3     name = "",
    4     timeLength = 05 }
    6 
    7 function Song.SetName(name)
    8     Song.name = name;
    9 end

    以上的函数定义可以使可以,但是有一个很大的问题,思考10s为什么?

    假如有以下逻辑:

    1 ChineseSong = Song; 
    2 Song = nil;
    3 ChineseSong.SetName("化身孤岛的鲸");

    赋值操作使两者指向了相同的内存地址。这样显然是编译通不过的,因为方法中用到了 Song,但是Song此时为 nil。

    以下是修改后的代码:

     1 Song = 
     2 {
     3     name = "",
     4     age = 0,
     5 }
     6 
     7 function Song.SetName(self, name)
     8     self.name = name;
     9 end
    10 local ChineseSong = Song;
    11 Song = nil;
    12 ChineseSong.SetName(ChineseSong, "化身孤岛的鲸");
    13 print(ChineseSong.name)

    运行结果:

    使用冒号可以简化函数的定义与调用,代码如下:

     1 Song = 
     2 {
     3     name = "",
     4     age = 0,
     5 }
     6 
     7 function Song:SetName(name)
     8     self.name = name;
     9 end
    10 
    11 local ChineseSong = Song;
    12 Song = nil;
    13 ChineseSong:SetName("化身孤岛的鲸");
    14 print(ChineseSong.name);

    运行结果:

  • 相关阅读:
    BOM(JavaScript高程笔记)
    初识AJAX
    初识DOM
    《JavaScript DOM 编程艺术》读书笔记
    git/ TortoiseGit 在bitbucket.org 使用证书登陆
    原生JS的对象常用操作总结
    js 判断对象相等
    IE 坑爹的浏览器兼容模式
    Linux+mysql混杂
    前端-CS-04
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/10473469.html
Copyright © 2011-2022 走看看