你是如何在自己的程序中获得变量的?
就像在Java中一样,你有:
private int a
public void sa(int a) { this.a = a}
public void ga() { return this.a }
Run Code Online (Sandbox Code Playgroud)
VB有'我'而C#有'这个'等.
但Lua相当于什么呢?这是正确的方向吗?
local a
function sa(a)
self.a = a
end
Run Code Online (Sandbox Code Playgroud)
小智 12
在lua中,您没有特定的类实现,但您可以使用表来模拟它.为了简单起见,Lua给你一些"语法糖":
要声明一个类成员,您可以使用这个完整的等效syntazes
function table.member(self,p1,p2)
end
Run Code Online (Sandbox Code Playgroud)
要么
function table:member(p1,p2)
end
Run Code Online (Sandbox Code Playgroud)
要么
table.member = function(self,p1,p2)
end
Run Code Online (Sandbox Code Playgroud)
现在,是棘手的部分:
调用
table:member(1,2)
Run Code Online (Sandbox Code Playgroud)
你得到:
自表=,P1 = 1,P2 = 2
调用
table.member(1,2)
Run Code Online (Sandbox Code Playgroud)
你得到:
自我= 1,P1 = 2,P2 =零
换句话说,:模仿真实的类,而.更像静态使用.好的是你可以混合这两种风格,例如:
table.member(othertable,1,2)
Run Code Online (Sandbox Code Playgroud)
给
自我= othertable,P1 = 1,P2 = 2
通过这种方式,您可以从其他实现多重继承的类中"借用"方法
有点像你所说的那样,但 OOP 方法有点不同。下面是实际的方法。
local t = {
a
}
t.__index = t
function t:sa(x)
self.a = x
end
Run Code Online (Sandbox Code Playgroud)
然后,调用该函数:
t:sa(21)
Run Code Online (Sandbox Code Playgroud)
或者
t.sa( t, "some string this time?" )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13382 次 |
| 最近记录: |