2009-07-01 35 views
5

C#有this,VB有ME。什麼是Lua等價物?Lua中的對象是如何引用的?

我想引用Roblox中的腳本類的父級。

+5

我將「LUA」更改爲Lua。Lua是葡萄牙語中的專有名詞,地球的月亮名稱。這不是一個縮寫。 – RBerteig 2009-07-01 06:08:21

回答

10

Lua documentation section 2.5.9,自參考通常self是:

冒號語法用於定義方法,即, 具有一個隱含的額外的參數self功能。因此,聲明

function t.a.b.c:f (params) body end 

是語法糖

t.a.b.c.f = function (self, params) body end 
9

由於Greg pointed out already,你正在尋找的名字是self

但是,請注意,Lua不僅僅是一種OOP語言,它還不僅僅是一種純粹的程序或功能語言。它只是提供所有實現OOP設計的低級機制。其中一個設計原則就是「提供機制,而不是政策」。因此,無法保證所運行的環境甚至使用繼承,或者您可以爲任何給定對象找到父級。

這將是審查的Lua手冊,程序在Lua的部分,涉及到OOP特性是一個好主意,和維基:

2

在Lua中,你會想要「自我」的價值。但是,您正在使用沙盒的ROBLOX。每個腳本都在它自己的線程中運行,並引用該腳本,你需要使用「腳本」,即script.Parent

1
local Table = {} 
Table.Var = "Testing" 

function Table:Test() 
print(self.Var) 
end 
Table:Test() 

local Table = {} 
Table.Var = "Testing" 
function Table.Test(self) 
print(self.Var) 
end 

兩個功能也將這樣做確切的事情。

- 編輯 -

這隻適用於表。如果您嘗試獲取腳本的父級,則需要使用script.Parent

- 注意 script.Parent將返回腳本所在的位置。如果添加另一個父級script.Parent.Parent,它將返回父級的父級,等等。