我正在努力学习Lua
我喜欢这样做(java代码):
public class Nave {
private TextField tx;
public Nave (TextField tx){
this.tx = tx;
}
public void setMessage (String s){
this.tx.setText(s);
}
}
public class SomeClass {
public static void main (String args[]){
Nave nave = new Nave (new TextField ("hello world"));
}
}
在Lua;我如何将TextField传递给对象?
答案 0 :(得分:1)
Lua没有直接拥有对象。 您可以使用与Java相同的方式将其传递给函数,但不能指定类型。 只需指定一个函数接受一个对象,然后传递它,就像Java一样。
这应该有助于Lua中的OO。 Lua Objects
Lua中的每个数据结构都是用表实现的,因此您可以将所有数据和函数放入表中,并且它将像对象一样运行。
我还建议阅读整本书,Lua有一些你可能不习惯的东西。
function newAccount (initialBalance)
local self = {
balance = initialBalance,
LIM = 10000.00,
}
local extra = function ()
if self.balance > self.LIM then
return self.balance*0.10
else
return 0
end
end
local getBalance = function ()
return self.balance + extra()
end
local withdraw = function (v)
self.balance = self.balance - v
end
local deposit = function (v)
self.balance = self.balance + v
end
return {
withdraw = withdraw,
deposit = deposit,
getBalance = getBalance
}
end
此函数采用初始平衡参数。 然后它创建一个表,用于保存选项的余额和限制。 由于闭包,该表将始终保持,因为作为表返回的函数包含对它的引用。
self中保存的对象和extra函数被认为是私有的,因为没有函数调用就无法访问它们,并且作为表返回的方法是公共方法。
这非常接近java对象。 你只需要使用一些Lua规则就可以使它像一个一样。即闭包和功能对象和表格。