技術共有

lua 入門 (2) - データ型

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

序文

この記事は以下から参照しています。Lua データ型の初心者向けチュートリアル (runoob.com)

さらに詳しく知りたい方は、上記のリンクをご確認ください。

8つの基本タイプ

type - データ型を表示する関数:

テストプログラム:

  1. print(type("Hello world")) --> string
  2. print(type(10.4*3)) --> number
  3. print(type(print)) --> function
  4. print(type(type)) --> function
  5. print(type(true)) --> boolean
  6. print(type(nil)) --> nil
  7. print(type(type(X))) --> string
  8. print(type(Y)) -->nil
  9. print(type('Y')) -->string

効果実証

ここで出力した type(Y) が nil 型であることがわかりますが、なぜでしょうか? 次の nil (空) が示されます。

なし(空)

nil 型は、有効な値を持たない型を表します。たとえば、代入なしで変数を出力すると、nil 値が出力されます。

初期化されていない変数タイプ - nil

以下の通り、初期値が割り当てられていない3つの変数の出力型は全てnilとなります。

nil はテーブル内のキーと値のペアを削除します

テストプログラム

  1. tab1 = { key1 = "val1", key2 = "val2",
  2. "val3","val4",key3 = "val5" }
  3. for k, v in pairs(tab1) do
  4. print(k .. " - " .. v)
  5. end
  6. print("=========直接输出=============")
  7. tab1.key1 = nil
  8. for k, v in pairs(tab1) do
  9. print(k .. " - " .. v)
  10. end
  11. print("============删除key1后==========")
  12. tab1.key3 = nil
  13. for k,v in pairs(tab1) do
  14. print(k.. " - "..v)
  15. end
  16. print("=========删除key3后============")

演算結果

グローバル変数とテーブルの場合、nil には「削除」効果もあります。グローバル変数またはテーブル内の変数に nil 値を割り当てることは、それらを削除することと同じです。

nil は二重引用符で比較する必要があります。」

type(X)==nil の結果は次のようになります間違いその理由は、type(X) は本質的に、返される "nil" 文字列 (文字列型) であるためです。

ブール値

ブール型には true (true) と false (false) の 2 つの値しかありません。Lua は false と nil を false として扱い、その他の数値 0 も true となります。

テストプログラム

  1. print(type(true))
  2. print(type(false))
  3. print(type(nil))
  4. if false or nil then
  5. print("至少有一个是 true")
  6. else
  7. print("false 和 nil 都为 false")
  8. end
  9. if 0 then
  10. print("数字 0 是 true")
  11. else
  12. print("数字 0 为 false")
  13. end

効果実証

番号


Lua のデフォルトの数値型は double (倍精度) 型の 1 つだけです (デフォルトの型は luaconf.h で変更できます)。以下の記述方法は num とみなされます。

文字列(文字列)

"" '' -- 文字列を表します


[[ ]] -- 文字列を表します
 

数字を強制的に文字列に入れることができる

数値文字列に対して算術演算を実行する場合、Lua は数値文字列を数値に変換しようとします。

文字列を連結するには .. を使用します

 

テーブル

Lua では、テーブルの作成は「構成式」によって行われます。最も単純な構成式は、空のテーブルを作成するために使用されます。テーブルにデータを追加して、テーブルを直接初期化することもできます。

初期化テーブル

インデックス(キー)に基づいてテーブルを変更する

Lua のテーブルは実際には「連想配列」(連想配列)、配列のインデックスは数値または文字列にすることができます。

Lua のインデックスは (ではなく) 1 から始まります

テーブルの長さは固定ではなく、新しいデータが追加されると、初期化されていないテーブルの長さは自動的に増加します。

関数

Lua では、関数は「第一級の値」とみなされます。

関数は変数に格納できます。

パラメータを渡すラムダ式 (無名関数)



Lua で最も重要なスレッドはコルーチンです。これはスレッドに似ており、独自の独立したスタック、ローカル変数、命令ポインタを持っています。
グローバル変数やその他のほとんどのものは、他のコルーチンと共有できます。

スレッドとコルーチンの違い: スレッドは同時に複数回実行できますが、コルーチンはいつでも 1 つだけ実行でき、実行中のコルーチンは一時停止された場合にのみ一時停止されます。

ユーザーデータ (カスタムタイプ)


userdata は、アプリケーションまたは C/C++ 言語ライブラリによって作成された型を表すために使用されるユーザー定義データのタイプです。
任意の C/C++ データ型 (通常は構造体とポインター) の任意のデータを Lua 変数に保存し、それを呼び出すことができます。