中括弧( '{'と '}')がLuaで使用されている場合、それらはどのように使用されていますか?Luaで中括弧を使用していますか?
答えて
表リテラル。
テーブルはLuaの中心型であり、連想配列(ハッシュテーブルまたは辞書)または通常の配列として扱うことができます。キーはnil
を除く任意のLuaタイプの値にすることができ、テーブルの要素はnil
以外の任意の値を保持できます。
アレイメンバーへのアクセスは、バックグラウンドでのハッシュキーアクセスよりも効率的ですが、詳細は通常は重要ではありません。実際には、値が格納されているセルに対してのみストレージを割り当てる必要があるため、スパース配列を扱うのが便利です。
これは、Cプログラマにとってちょっと変わった普遍的な1ベースの配列のイディオムにつながります。
a = { 1, 2, 3 }
例えば
は(偶然に)それらのインデックスと同じ値を持っていることを三つの要素と変数a
に格納された配列を作成します。非整数キーを使用してテーブルを初期化3.
は次のように行うことができる要素は1から始まるシーケンシャルインデックスに格納されるため、a
の長さ(#a
又はtable.getn(a)
によって与えられる)されている:
b = { one=1, pi=3.14, ["half pi"]=1.57, [function() return 17 end]=42 }
b
は、 "one"、 "pi"、 "half pi"、および無名関数という名前のエントリを持ちます。もちろん、テーブルを反復せずに最後の要素を調べることは、その非常に大きな関数のコピーが他の変数に格納されていない限り難しいかもしれません。
中括弧が現れる別の場所は、実際には同じセマンティックな意味ですが、構文上の砂糖の後ろに(Luaの新しいユーザーにとって)隠されています。テーブルでなければならない単一の引数をとる関数を書くのが一般的です。その場合、関数を呼び出すには括弧を使用する必要はありません。これは、両方とも明らかに関数呼び出し演算子として使用される()
と{}
の組み合わせを含むように見えるコードになります。
btn = iup.button{title="ok"}
は
btn = iup.button({title="ok"})
に同等であるだけでなく、目にあまり難しいです。ちなみに、リテラル値を持つ単一引数の関数を呼び出すと、文字列リテラルでも機能します。唯一の一般的なケースだ
t = {'a', 'b', 'c'}
:あなたがCで使用するよう
彼らはテーブルリテラルを使用しています。ブロック区切り文字には使用されません。Luaのテーブルで、あなたはさまざまな種類の値を置くことができます。
t={"foo", 'b', 3}
ます。また、ラ・パイソンA、dictionnariesとしてそれらを使用することができます。
t={name="foo", age=32}
- 1. 中括弧の中身を抽出していますか?
- 2. PHPネームスペース構文:中括弧と中括弧の違いは何ですか?
- 3. stylecop:角括弧内の中括弧
- 4. 中括弧への接尾辞 - 括弧
- 5. 中括弧に
- 6. 中括弧
- 7. xmlを生成する際に、PHPで中括弧と中括弧を引用符で囲みます。
- 8. ジャンゴ重中括弧{{
- 9. 中括弧PHPクラス
- 10. Emacsの中括弧
- 11. 中括弧と括弧を使用してセル要素にアクセスすることの相違点
- 12. Javaで空の中括弧/中括弧は何を意味しますか?ここ
- 13. JSDoc @type中括弧は何ですか?
- 14. 中括弧内のテキストを解析しますが、内括弧で停止しませんか?
- 15. 中括弧を使用してRubyでループを実行する方法
- 16. SQLクエリで中括弧{}は何をしますか?
- 17. gで__attribute__を使用しているアンバランスな括弧
- 18. は、私は中括弧で列を選択しようとしていますが、列は、例えば、接頭辞を持っている中括弧
- 19. CSSで角括弧()を使用する
- 20. C#は、中括弧なしのコードブロックをサポートしていますか?
- 21. C#WPFグラフィックを使用して中括弧を描く - 使用可能な実装はありますか?
- 22. Pythonのサブプロセス:中括弧
- 23. C#中括弧の問題
- 24. SVG水平の中括弧
- 25. PHPの中括弧記法
- 26. OSX悪意のあるターミナルコマンド(など、コロン、括弧、中括弧、apersand、)
- 27. SQLクエリーでの中括弧と "OJ"の使用の理解
- 28. Vim自動インデント中括弧が間違っています
- 29. pstreeのプロセスの中括弧は何を意味しますか?
- 30. PHP:$ variable {0}の中括弧は何をしますか?
私はそれらを交換するためのシンプルなプリプロセッサの追加について興味がありました"do/then"と "end"を使って少し冗長にします。 – Sydius
トークンフィルタとmetalua、www.lua.orgで発見のLua-Lメーリングリストで頻繁に参照の両方を見てみましょう。両方とも、抽象構文ツリーレベルで言語を変更する方法を提供し、これを行うことができます。プリプロセッサは、正しい結果を得るために多くの解析を行う必要があります。 – RBerteig