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 ]]