中国語プログラミング入門(Lua 5.4中国語版)第二章Luaデータ型第三節表関数スレッドユーザーデータ
2502 ワード
テーブル
Luaでは、テーブル(table)の作成は「構造式」によって行われ、最も簡単な構造式は{}であり、空のテーブルを作成するために使用されます.
テーブルにデータを追加して、テーブルを直接初期化することもできます.
≪インスタンス|Instance|emdw≫
Luaのテーブル(table)は、実際には「関連配列」(associative arrays)であり、配列のインデックスは数値または文字列であってもよい.
≪インスタンス|Instance|emdw≫
スクリプトの実行結果は次のとおりです.
他の言語とは異なる配列は0を配列の初期インデックスとし,Luaでは表のデフォルト初期インデックスは一般に1で始まる.
≪インスタンス|Instance|emdw≫
スクリプトの実行結果は次のとおりです.
テーブル(table)は長さサイズが固定されず、新しいデータが追加されるとテーブル(table)の長さが自動的に増加し、初期のテーブル(table)がなくてもnilになります.
≪インスタンス|Instance|emdw≫
スクリプトの実行結果は次のとおりです.
関数(function)
Luaでは、関数は「第1クラス値(First-Class Value)」とみなされ、関数は変数に存在することができる.
≪インスタンス|Instance|emdw≫
スクリプトの実行結果は次のとおりです.
関数(function)は、匿名関数(anonymous function)でパラメータを介して渡すことができる.
≪インスタンス|Instance|emdw≫
スクリプトの実行結果は次のとおりです.
スレッド(thread)
Luaでは,最も主要なスレッドは協同プログラム(coroutine)である.スレッド(thread)とあまり差がなく、独自のスタックを持っています.
ローカル変数と命令ポインタは、他の協同プログラムとグローバル変数と他の大部分を共有することができます.
スレッドとスレッドの違い:スレッドは同時に複数実行できますが、スレッドは任意の時点で1つしか実行できません.実行状態のスレッドは
サスペンドされた場合にのみ一時停止します.
ユーザデータ(userdata)
ユーザーデータ(userdata)は、アプリケーションまたはC/C++言語ライブラリによって作成されるタイプを表すユーザー定義データです.
C/C++の任意のデータ型のデータ(通常はstructとポインタ)はLua変数に格納されて呼び出される.
Luaでは、テーブル(table)の作成は「構造式」によって行われ、最も簡単な構造式は{}であり、空のテーブルを作成するために使用されます.
テーブルにデータを追加して、テーブルを直接初期化することもできます.
≪インスタンス|Instance|emdw≫
-- (table)
1 = {}
--
2 = {" ", " ", " ", " "}
Luaのテーブル(table)は、実際には「関連配列」(associative arrays)であり、配列のインデックスは数値または文字列であってもよい.
≪インスタンス|Instance|emdw≫
-- .lua
a = {}
a[" "] = " "
= 10
a[ ] = 22
a[ ] = a[ ] + 11
k, v (a)
(k .. " : " .. v)
スクリプトの実行結果は次のとおりです.
$ lua .lua
:
10 : 33
他の言語とは異なる配列は0を配列の初期インデックスとし,Luaでは表のデフォルト初期インデックスは一般に1で始まる.
≪インスタンス|Instance|emdw≫
-- 2.lua
2 = {" ", " ", " ", " "}
, ( 2)
(" ", )
スクリプトの実行結果は次のとおりです.
1
2
3
4
テーブル(table)は長さサイズが固定されず、新しいデータが追加されるとテーブル(table)の長さが自動的に増加し、初期のテーブル(table)がなくてもnilになります.
≪インスタンス|Instance|emdw≫
-- 3.lua
a3 = {}
i = 1, 10
a3[i] = i
a3[" "] = " "
(a3[" "])
(a3[" "])
スクリプトの実行結果は次のとおりです.
$ lua 3.lua
nil
関数(function)
Luaでは、関数は「第1クラス値(First-Class Value)」とみなされ、関数は変数に存在することができる.
≪インスタンス|Instance|emdw≫
-- .lua
1(n)
n == 0
1
n * 1(n - 1)
( 1(5))
2 = 1
( 2(5))
スクリプトの実行結果は次のとおりです.
$ lua .lua
120
120
関数(function)は、匿名関数(anonymous function)でパラメータを介して渡すことができる.
≪インスタンス|Instance|emdw≫
-- 2.lua
( 4, )
k ,v ( 4)
( (k,v));
4={ 1=" 1", 2=" 2"};
( 4,
( , )--
.."=".. ;
);
スクリプトの実行結果は次のとおりです.
$ lua 2.lua
1 = 1
2 = 2
スレッド(thread)
Luaでは,最も主要なスレッドは協同プログラム(coroutine)である.スレッド(thread)とあまり差がなく、独自のスタックを持っています.
ローカル変数と命令ポインタは、他の協同プログラムとグローバル変数と他の大部分を共有することができます.
スレッドとスレッドの違い:スレッドは同時に複数実行できますが、スレッドは任意の時点で1つしか実行できません.実行状態のスレッドは
サスペンドされた場合にのみ一時停止します.
ユーザデータ(userdata)
ユーザーデータ(userdata)は、アプリケーションまたはC/C++言語ライブラリによって作成されるタイプを表すユーザー定義データです.
C/C++の任意のデータ型のデータ(通常はstructとポインタ)はLua変数に格納されて呼び出される.