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"));

    }
}

ルアで。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 ルールのいくつかを使用して、Lua ルールのように動作させる必要があります。つまり、クロージャーと関数オブジェクトとテーブルです。

于 2013-08-02T17:00:14.393 に答える