• lua中.和:的区别


     1 local myTable = {}
     2 
     3 function myTable:putMyname(val)
     4     print(val)
     5     print(self and self.name)
     6 end
     7 
     8 myTable.name = "Mical"
     9 myTable:putMyname()  
    10 --结果:nil
    11 --     Mical
    12 
    13 --说明“:”调用时传了一个默认参数self进去,并在用":"定义的函数内可使用,且这个参数不能被":"定义的函数de参数列表接收。
    14 
    15 myTable.putMyname()
    16 --结果:nil
    17 --     报错,putMyname里的self为1
    18 
    19 --说明“.”调用“:”定义的函数时,第一个参数会被赋值为self,参数列表接收的值从第二个参数开始。
    20 
    21 
    22 function myTable.putMyAge(age)
    23     print(age)
    24     print(self and self.age)
    25 end
    26 
    27 myTable.age = 12
    28 myTable:putMyAge()
    29 --结果:table:002DD348
    30 --     nil
    31 
    32 --说明“:”调用时默认传递的self可被“.”定义的函数的参数列表接收
    33 
    34 
    35 myTable.putMyAge()
    36 --结果:nil
    37 --     nil
    38 
    39 --说明:正常调用
    40 
    41 --总结:
    42 --[[
    43     “:”掉用的时候会把自己传进去,对于“:”定义的函数不在参数列表体现,直接函数中用self获取,而“.”定义的函数被第一个参数接收。
    44     “.”调用“:”定义的函数时,第一个参数会被捕获用于self的赋值,所以参数列表从第二个值开始接收。
    45 ]]
  • 相关阅读:
    Excel导入
    Git 操作命令
    java线程池
    jquery 初始化数据 添加html 第一次玩0.0
    设计模式六大原则之二:里氏替换原则
    升级指令
    strtok和strtok_r(转载)
    docker进阶之路-基础篇 | 二:portainer安装与基本使用
    docker进阶之路-基础篇 | 一:环境搭建
    集群式Quartz定时任务框架实践
  • 原文地址:https://www.cnblogs.com/wrbxdj/p/5367699.html
Copyright © 2020-2023  润新知