zoukankan      html  css  js  c++  java
  • 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 ]]
  • 相关阅读:
    web.xml文件详解
    SQLSERVER dbo解释
    sqlserver BULK INSERT
    google 基站定位api
    Sqlserver中Select和Set区别
    SQL Server优化50法
    ibatis常用16条SQL
    面向对象 -- 三大特性之继承 补充 抽象类 接口类
    面向对象 -- 三大特性之继承
    面向对象 -- 类的组合
  • 原文地址:https://www.cnblogs.com/wrbxdj/p/5367699.html
Copyright © 2011-2022 走看看