2

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

4

1 回答 1

1

Lua 没有直接的对象。您可以像在 Java 中一样将它传递给函数,但不能指定类型。只需指定一个函数接受一个对象,然后传递它,就像 Java 一样。

这应该有助于 Lua 中的 OO。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-02T17:00:14.393 回答