将 Lua 中的参数传递给对象

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

点赞
用户2407794
用户2407794

Lua没有直接的对象。 你可以像在Java中一样将它传递给函数,除了你无法指定类型。 只需指定函数接受一个对象,然后将其传递,就像在Java中一样。

这应该有助于在Lua中实现面向对象编程。Lua对象

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规则使其像一个对象行为。例如闭包、函数对象和表格。

2013-08-02 17:00:14