2011-01-12 19 views
5

私は数日前にLuaでプログラミングを始めました。私は構文に精通しており、Prosody XMPPサーバー用のモジュールを作成しています。私はProsodyサーバー設定(Luaにあります)でコードのスニペットを実行しました。このLuaコードの理解を助けてください

2行目のテーブルが最初の行にどのようにリンクされているかを調べようとしています。

VirtualHost関数のパラメータですか?すなわち、コードは次のように記述することができます。

VirtualHost "example.com", { 
    enabled = false; 
    ssl = { 
    key = "certs/example.com.key"; 
    certificate = "certs/example.com.crt"; 
    }; 
}; 

は、私は、さらに研究する必要があるいくつかのLuaの概念はありますか?

+0

私はこのスタック交換[提案](http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 "コードレビュー")があなたにとって興味深いかもしれないと思います。それがあなたのサポートを示し、それをベータ版に手伝ったら! :) – greatwolf

答えて

10

最初の行と残りの部分は直接接続されていません。最初の行はVirtualHost("example.com")に相当します。関数呼び出しに1つの文字列パラメータだけが渡された場合は、かっこは必要ありません。韻律のソースコードを見てみると

、何をここで起こっていることは、設定ファイルをロードするコードがトラップにsetfenvsetmetatableの組み合わせを使用していますが、グローバル変数(sslenabled)に書き込むことです。 enabled = falseと書くと、グローバル変数enabledは実際には設定されませんが、現在定義されている仮想ホストのプロパティを設定するProsodyコードで定義された関数が呼び出されます。

これはすべて、core/configmanager.luaのparsers.lua.load機能で実装されています。

について、あなたはsetfenvheresetmetatablehereを読むことができます(詳しくは、このコードは__newindex metamethod使用しています)。

+0

ありがとう、それは私を助けた! –

関連する問題