この第1版は Lua 5.0向けに書かれています。以降のバージョンと依然として大きく関連していますが、いくらか相違点があります。
第4版は Lua 5.3を対象としており、Amazonやその他の書店で購入できます。
本を購入することで、Luaプロジェクトをサポートすることもできます。


3.2 - 比較演算子

Luaは次の比較演算子を提供しています。
    <   >   <=  >=  ==  ~=
これらの演算子はすべて必ずtrueまたはfalseの結果になります。

==演算子は等価性をテストします。~=は等価性の否定演算子です。どちらの演算子も2つの値に適用できます。値の型が異なる場合、Luaはそれらを異なる値とみなします。そうでない場合、Luaは型によってそれらを比較します。具体的には、nilは自身と同じ値のみに等しいです。

Luaはテーブル、ユーザーデータ、関数を参照によって比較します。つまり、そのような2つの値は、同じオブジェクトである場合にのみ等しいとみなされます。たとえば、以下のコードを実行した後は

    a = {}; a.x = 1; a.y = 0
    b = {}; b.x = 1; b.y = 0
    c = a
a==cが真になりますが、a~=bが真になります。

順序演算子は2つの数字または2つの文字列にのみ適用できます。Luaは通常の方法で数字を比較します。Luaは文字列をアルファベット順で比較します。これは、Luaのロケールによって決まります。たとえば、ヨーロッパのラテン1ロケールでは"acai" < "açaí" < "acorde"となります。他の型は等価性(および不等価性)についてのみ比較できます。

異なる型の値を比較するときは注意が必要です。"0"==0はfalseであることを覚えておいてください。さらに、2<15は明らかにtrueですが、"2"<"15"はfalseです(アルファベット順)。矛盾した結果を避けるために、Luaは2<"15"などの順序比較で文字列と数字を混在させるとエラーを発生させます。