1. ホーム
  2. pointers

[解決済み] Luaにポインタのようなものはありますか?

2022-02-11 17:49:26

質問

Luaの初心者ですが、以下のような値を格納するテーブル[doh]を作成したいのです。

parent.child[1].value = "whaterver"
parent.child[2].value = "blah"

しかし、ほとんどの場合、子プロセスは1つだけなので、このように値にアクセスする方が簡単です。

parent.child.value

もっとシンプルにするために、私は以下のような方法で値を保存したいと思います。

parent.child[1].value == parent.child.value

しかし、これを行うには、この値をメモリに2回保存する必要があります。 何か方法はないでしょうか。

parent.child.value points to parent.child[1].value

値をメモリに2回保存することなく?

追加の質問ですが、テーブルがどれくらいのメモリを消費するかを確認する方法はありますか?

どのように解決するのですか?

<ブロッククオート

が、値は文字列として保存されるので、必要なのは文字列です。 テーブルではなく、両方の場所で参照されます。

まず、すべての型(ブーリアン、数値、ライトユーザー・データを除く)は参照です。 t がテーブルで t2 = t であるならば、両方の tt2 は、メモリ上の同じテーブルへの参照である。

2つ目は、Luaでは文字列はインターンであるということです。つまり、すべての等しい文字列、例えば "abc" の結果であり "ab".."c" は実際には1つの文字列です。また、Luaは文字列への参照のみを保存します。ですから、メモリについて心配する必要はありません。文字列のインスタンスは一度に1つしか存在しないのです。

を安全に行うことができます。 parent.child.value = parent.child[1].value テーブルの1スロット分のメモリ(数バイト)しか使用せず、文字列はコピーされず、参照されるだけです。