この第 1 版は Lua 5.0 用に書かれました。後のバージョンとの関連性は依然として高いものの、いくつかの違いがあります。
第 4 版では Lua 5.3 を対象としており、Amazon やその他の書店で購入できます。
書籍を購入することにより、Lua プロジェクトをサポートすることもできます。
![]() |
Lua でのプログラミングLua | ![]() |
第 4 部 C API 第 27 章 C 関数の作成手法 |
多くの場合、C 関数は呼び出しよりも永続する非ローカルデータ、つまりデータを保持する必要があります。C では一般的に、これにはグローバルまたは静的変数が使用されます。ただし、Lua 用のライブラリ関数をプログラムする場合、グローバル変数や静的変数は適切なアプローチではありません。まず、汎用 Lua 値は C 変数に格納できません。次に、このような変数を使用するライブラリは複数の Lua ステートで使用できません。
別の方法として、このような値を Lua のグローバル変数に格納する方法があります。この方法では前の 2 つの問題が解決します。Lua のグローバル変数はあらゆる Lua 値を格納し、それぞれ個別のステートにはグローバル変数の個別のセットがあります。ただし、Lua コードでこれらのグローバル変数を改ざんし、C データの整合性を損なう可能性があるため、これは常に満足できる解決策ではありません。この問題を回避するために、Lua ではレジストリと呼ばれる独立したテーブルを提供しています。これは C コードでは自由に使用できますが、Lua コードではアクセスできません。
Copyright © 2003–2004 Roberto Ierusalimschy. All rights reserved. | ![]() |