点(.)
- 点(.)用于访问一个对象的字段或调用一个对象的方法。
local person = {name = "Alice", age = 30}
-- 访问字段
print(person.name) -- 输出:"Alice"
-- 调用方法
function person:sayHello()
print("Hello, my name is " .. self.name)
end
person.sayHello(person) -- 或者使用 person:sayHello()
在上述例子中,.被用来访问person对象的字段(name和age)和调用对象的方法(sayHello)。
冒号(:)
- 冒号(:)用于调用对象的方法,同时将对象自身作为第一个参数传递给方法。
local person = {name = "Bob", age = 25}
-- 使用冒号定义方法
function person:sayHello()
print("Hello, my name is " .. self.name)
end
-- 使用冒号调用方法
person:sayHello() -- 输出:"Hello, my name is Bob"
冒号的使用方式更加简洁,省略了明确传递对象自身的步骤。
self关键字
- self是一个习惯上用来表示对象自身的名字,通常在对象的方法中作为第一个参数使用。
local person = {name = "Charlie", age = 35}
function person:sayHello()
print("Hello, my name is " .. self.name)
end
person:sayHello() -- 输出:"Hello, my name is Charlie"
self在这里表示调用方法的对象本身。在上述例子中,person:sayHello()中的self将会是person。
总体而言,在Lua中使用.和:的选择通常依赖于是否需要将对象自身作为方法的第一个参数传递。如果你定义的函数是对象的方法,那么推荐使用冒号(:)来调用。
转载请注明出处:http://www.pingtaimeng.com/article/detail/6520/Lua