2017-10-03 2 views
1

ポストで改善したコードを使用して)this simple Lua exampleを複製しようとすると、私は以下の奇妙な問題が発生しました:スクリプトが "table.lua"と呼ばれる場合、Luaにエラーが必要ですか?

私は「table.luaを」そのままのコードをコピーしますが、最初のファイルを呼び出すために起こったが( "funcs.lua"の代わりに)。 例のように、2番目のファイルは "main.lua"と呼ばれていました。

私の場合、何か試してみましたが、いつも人気のあるエラーメッセージ "フィールド 'myfunc'(無しの値)を呼ぶことはありません"(require文は無視されているようですが、すべて順番になっていた)。

しようとの情報のための狩猟の2時間後、私は多かれ少なかれ直感で「tabble.lua」に「table.lua」から最初のファイルの名前を変更し、そして予想通り、その後すべてが速やかに働きました。名前を例えばに変更する"tables.lua"も有効です。

Luaの新機能で、何が間違っていたかを理解したいと思います。当初、私は理由が "テーブル"が予約されたルア語だと思っていましたが、私がチェックしたすべての参考文献はそのようなものではありません。

ここでは何が起こっていますか?

私は、付属のSciTEエディタ/ IDE(v.1.75)でLuaForWindows v5.1.4-46を使用しています。

ありがとうございます。

+0

リンクではなく、自分のポストで使用しているコードを与えると、助けが簡単になります。 –

答えて

3

標準ライブラリmathiostring、...、とtableは、事前定義された(とプリロード)されているLuaのインタプリタインチ名前でキャッシュモジュールを必要とするため、require "table"と言うと、tableモジュールをファイルからロードする代わりに標準tableライブラリが返されます。

問題を解決するには、フォルダを作成し、そこにライブラリファイルを配置するのが良い方法です。フォルダがmylibとなっている場合は、require "mylib.table"が動作し、ファイルがロードされます。

あなたは一度だけファイルをロードする必要があり、(ディレクトリ、キャッシュにロードされるライブラリの数のファイルを検索)requireの機能を必要としない場合は別の方法として、あなたはloadfileを使用することができます。loadfile "./table.lua"()require "table"を変更します(ここで、./table.luaファイルへの完全な相対パスでなければなりません。

+0

それは確かにそれを説明します。予約語だけのライブラリを考えなかった。 (ストリートクレジットの私の不足のためにアップビューは見えない。) –

関連する問題