式

最終公開日 : Sep 25, 2026
式は変数とリテラル値から値を計算します。
  • 算術演算
  • リレーショナルオペレーション
  • ロジカルオペレーション
  • 連結
  • 長さ
  • 優先順位

算術演算

算術演算は数値に対して実行されます。文字列値を算術演算に使用すると、数値に変換されます。変換に失敗すると、エラーが返されます。
a + b a と b を追加
a-b a から b を引く
a * b a と b を掛ける
a/b a を b で割る
a% b modulo = a - math.floor(a/b)*b
a \^ b a を b 乗する。b には任意の数を指定できる
-a 否定する

リレーショナルオペレーション

関係演算は 2 つの値を比較し、関係が満たされている場合は true を返し、そうでない場合は false を返します。リレーショナル操作は、どのタイプの値でも実行できます。値が同じタイプでない場合は、false が返されます。数値は通常の方法で比較されます。文字列は、現在のロケールの照合順序を使用して比較されます。
a == b a は b と等しい
a ~= b a は b と等しくない
a < b a は b より小さい
a > b a は b より大きい
a <= b a が b と等しいか、それより小さい
a >= b a が b より大きいか、または等しい

ロジカルオペレーション

論理演算は従来、ブール値に対して実行されていましたが、この言語では任意の2つの値に対して実行できます。nilとfalseはfalseと見なされ、その他の値はtrueと見なされます。論理演算ではショートカット評価を使用します。最初の値が操作の結果を決定する場合、2 番目の値は評価されません。
a と b a が false または nil の場合は a を返し、それ以外の場合は b を返します。
a or b a が false ではなく nil でもない場合は a を返し、それ以外の場合は b を返します。
not a a が false でないか nil の場合は false を返し、それ以外の場合は true を返します
andおよびor演算は、式内の条件付き評価に使用できます。
a or b a が初期化されていない (nil) 場合は、これを使用してデフォルト値 b を指定できます。これは関数のオプションパラメータに役立ちます。
a と b または c 条件 a に基づいて、nil 以外の b または c を選択できます。a が true の場合、a と b は b を返し、b または c は b を返します。a が false の場合、a と b は false を返し、false または c は c を返します。これは? と同等です。b: C プログラミング言語の c。

連結

文字列の連結は s1.. s2 です。これにより、s1 と s2 の内容を保持するのに十分な大きさの新しい文字列が作成され、その内容が新しい文字列にコピーされます。s1 または s2 が文字列でない場合、エラーが発生します。連結を繰り返すと、かなりのコピーオーバーヘッドが発生する可能性があることに注意してください。一度に 1 バイトずつ連結して n バイトの文字列を作成すると、n* (n+1) /2 バイトがコピーされます。パフォーマンスを向上させるには、文字列の一部を連結してテーブル (後述) に入れ、table.concat () 関数を使用できます。この例が COMBINE_HEADERS () の例に示されています。

長さ

文字列 s の長さは #s によって返されます。#演算子は、後で説明するように、配列テーブルでも使用されます。

優先順位

演算子の優先順位によって、式で実行される演算の順序が決まります。優先順位の高い操作は、優先順位の低い操作より先に実行されます。優先順位は通常どおり、括弧で上書きできます。たとえば、in a + b &ast; c, * は+よりも優先順位が高いため、 a + (b &ast; c)式は次のように評価されます。
最高 \^
- not # - (unary)
-
  • / %
-
  • -
- ..
- = ~= < > <= >=
- 変更前
最低 または
同じ優先順位の演算は左から右 (左連想) に実行されますが、\^ と.. は右から左 (右連想) に実行されます。したがって、\^ b \^ cはa\&#94;(b \&#94; c)として評価されます。