3

Lua スクリプトの A0、A1、A2 など、いくつかのグローバル整数変数があります。それらはC側で宣言されています。それぞれに一意の数値が含まれています。
スクリプトでは、ユーザーは次のエイリアスを使用してデバイス ピンを操作します。

set_pin_bool(A0, 1) 

そして、これは対応する C 関数を呼び出します。C ライクすぎて、あまり便利ではないと思います。より良いのは、A0.hi()、A0.low()、A0.set(1) などのメソッドを呼び出すことです。
そのため、A0 などを C のテーブルとして宣言しようとしました (これは単なる構造体です)。

lua_newtable(this->luactx);     
lua_pushstring(this->luactx, "val");
lua_pushinteger(this->luactx, value);
lua_rawset(this->luactx, -3);
lua_setglobal ( this->luactx, "A0" );

hiのようなファイルを作成し、lua_pushcfunction を使用して登録できます。しかし、A0.hi() を呼び出すと、C 側で別のフィールドを取得するために呼び出されたテーブルにアクセスできなくなります。そして、私がグーグルで調べたように、Cからselfのようなものを取得する方法はありません.それを達成する方法はありますか? A0.hi(A0)のように、テーブル自体を引数として渡したく
ありません。多くのエイリアスが存在する可能性があり、異なる名前を付けることができます。
それとも、同じ目標に対して異なるアプローチがあるのでしょうか?

4

1 に答える 1

4

hi次のように関数を呼び出します。

A0:hi()

これは次と同等です。

A0.hi(A0)
于 2015-03-10T12:43:43.437 に答える