将参数传递给Lua中的对象

时间:2013-08-02 16:53:34

标签: java lua textfield

我正在努力学习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传递给对象?

1 个答案:

答案 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规则就可以使它像一个一样。即闭包和功能对象和表格。