2017-10-16 26 views
3

私はluaを初めて使っています。私は、ファイルからテーブルの読み込みに関連するクエリを持っています。 例:ルアテーブルを含む設定ファイルを読む方法

return { 
    ["param1"] = { 
     ["attribute"] = { 
      ["myparam"] = 1, 
     }, 
    ["param2"] = 1 
} 

私はこのファイルを読み、私のconfigファイルのパラメータにアクセスするにはどうすればよい 私はLuaのテーブル形式の設定ファイルを持っていますか?あなたが別のLuaスクリプトを使用して設定ファイルを読みたい場合は

+1

コンフィグファイルは悪い考えです。これらのことに注意してください – Matt

+1

忘れてしまった '}、'最初に "param1"テーブルを閉じる –

答えて

2

CONFIGDATAの= 'が必要です'( "configfileを")

注意が必要なだけのLua-ファイルを読み込むことができます。 また、 'require'を使用する場合は、 '.lua'拡張子を含めないでください。

+0

あなたの "難しい方法"はまったくの間違いです。あなたはファイルを一列に読んだり再連結します(二次的に遅く、ファイルを開き、 ':read" * a "' - あなたは内容を変更しません)。次に結果を 'loadstring'します(これはあなたが好きなだけ呼び出すことができる関数です)。しかし、すぐにそれを呼び出して、内部コードをラップして実際のコードを関数としてグローバル変数に割り当てます。 'configData = loadfile" config.lua "はあなたの5行と同じ効果を持ち、すべてのナンセンスはありません。 – nobody

+0

@nobodyコメントのあなたのやり方はまったくの間違いです。私を侮辱しようとせずにio.linesの代わりに ":read" * a "'を使うよう助言することもできます。また、それを愚かと呼ぶ前に、 "ハード"モードの背後にある理由を読んでください。 私はインターネットではなく、本でLuaを学びました。だから私のコード作成方法はあなたとはかなり異なるかもしれませんが、そういう意味であなたの欲求不満を表現するべきではありません。 このウェブサイトは学習のためのものであり、コードを書く方法がばかげている人のためのものではありません。 しかし、私は ':read "* a"'を代わりに使用します –

+0

(Side-branch :)「間違って二次的な」コードを呼び出すIMHOが適切です。あなたはそれを個人的に取っているように見えますが、これは意図された効果ではありませんでした。反復連結の悪さを確認するには 'local c =" "; i = 1、1e6の場合do c = c .. "。" 「ローカル」対「ローカル」= {}; i = 1、1e6の場合do t [i] = "。"終わり ;ローカルc = table.concat(t) '。両方とも1M文字を連結するのと同じ仕事をしますが、第2のものは〜0.5秒かかる一方、最初のものは3分_を要します! (なぜ私はそれが何と言えばいいのか見てみましょう)そうです:ループで連結すると、最後にテーブル& 'table.concat'に蓄積されます! – nobody

2

アプリケーションソース内の設定ファイルrequireを簡単に使用できます。未チェックのコードが含まれてい

local config = require "config" 
+1

'require'は* file *の名前ではなく* module *の名前を受け付けます。 – lhf

+0

@lhf ahはい。それを忘れていた。一定。 – hjpotter92

関連する問題