A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 機能比較 | 項目 | UWSC | Lua | |||||||||||||||||
2 | |||||||||||||||||||||
3 | 他ファイルの実行 | EXEC() | os.execute | ||||||||||||||||||
4 | COM オブジェクト | CREATEOLEOBJ() | require( "luacom" ) luacom.CreateObject() | ||||||||||||||||||
5 | DLL定義 | DEF_DLL 関数名(型, 型, ...): 戻り型: DLL名 | require( "alien" ) local mb = alien.User32.MessageBoxA mb:types{ ret = 'long', abi = 'stdcall', 'long', 'string', 'string', 'long' } | ||||||||||||||||||
6 | DLL関数呼び出し | 関数名(引数) | mb(0, "Hello World!", "test", 64) | ||||||||||||||||||
7 | スレッド | thread 関数名() | スレッドという用語はあるが別の意味 | ||||||||||||||||||
8 | キー、マウス制御 | kbd(), mmv(), btn() | Win32API | ||||||||||||||||||
9 | 継承クラス | なし | あり | ||||||||||||||||||
10 | コールバック | なし | 可能 | ||||||||||||||||||
11 | |||||||||||||||||||||
12 | 言語仕様 | 比較 | UWSC | Lua | |||||||||||||||||
13 | |||||||||||||||||||||
14 | |||||||||||||||||||||
15 | コメント | 1行コメント | // | # 行頭でのみコメント扱い -- どこでも行末までコメント | |||||||||||||||||
16 | 複数行コメント | なし。 textblock で代替 | -- [[ 複数行コメント 角括弧で囲まれた部分がコメントになる ]] | ||||||||||||||||||
17 | |||||||||||||||||||||
18 | 改行 | コード途中での改行 | 行1 _ 行2 | 自由。 ただし、 ( で始まる場合は連続しない。 | |||||||||||||||||
19 | マルチステートメント | ; | ; | ||||||||||||||||||
20 | |||||||||||||||||||||
21 | 出力 | テキスト表示 | print "文字列" | print("文字列1", "文字列2", ...) | |||||||||||||||||
22 | |||||||||||||||||||||
23 | 変数 | 明示的な定義 | PUBLIC 変数 DIM 変数 // ブロック内でローカル変数 | 変数 --常にグローバル local 変数 -- ローカル変数の場合 | |||||||||||||||||
24 | 代入による定義 | 変数 = 値 | 変数 = 値 | ||||||||||||||||||
25 | 代入前の変数 | 参照するとエラー | nil | ||||||||||||||||||
26 | スコープ | 関数外はグローバル、内はローカル | 関数外はグローバル、内はローカル ただし、ローカル指定しないとグローバル変数になる | ||||||||||||||||||
27 | |||||||||||||||||||||
28 | 定数 | NULL | NULL | NIL | |||||||||||||||||
29 | 16進数 | $数値 | 0x数値 | ||||||||||||||||||
30 | 指数 | なし | 数値e-2 数値E1 | ||||||||||||||||||
31 | 文字列 | "文字列" | "文字列" # 制御文字が処理される '文字列' [[文字列]] # 制御文字はそのまま表示 [==[文字列]==] # また、複数行可能 | ||||||||||||||||||
32 | 文字列中の特殊文字 | <#CR> // 改行コードを表す <#DBL> // ダブルコーテイション <#TAB> // タブを表す | \a' (bell), '\b' (backspace), '\f' (form feed), '\r' (carriage return), '\v' (vertical tab), '\\' (backslash), '\'' (apostrophe [single quote]). \n \" \t | ||||||||||||||||||
33 | 文字列処理の比較 | 結果 | |||||||||||||||||||
34 | LENGTH("mojiretu") | string.len("mojiretu") #"mojiretu" | 8 | ||||||||||||||||||
35 | COPY("mojiretu", 3, 3) | string.sub("mojiretu", 3, 5) | jir | ||||||||||||||||||
36 | POS("mojiretu", "e") | string.find("mojiretu", "e") | 6 | ||||||||||||||||||
37 | REPLACE("mojiretu", "ji", "字") | string.gsub("mojiretu", "ji", "字") | mo字retu | ||||||||||||||||||
38 | |||||||||||||||||||||
39 | 配列 | 配列の宣言 | DIM 配列[] DIM 配列[][] | 配列 = {} | |||||||||||||||||
40 | 配列宣言+代入 | DIM 配列[] = 1, 2, "3" | 配列 = {1, 2, "3"} | ||||||||||||||||||
41 | 配列要素への代入 | 配列[0] = 1 | 配列[1] = 1 | ||||||||||||||||||
42 | 添え字 | 添え字は 0 から | 添え字は 1 から | ||||||||||||||||||
43 | |||||||||||||||||||||
44 | 連想配列 | 連想配列への複数代入 | なし | 配列 = { keyA = 1, keyB = 2, keyC = 3 } | |||||||||||||||||
45 | 連想配列 | 変数[キー] = 1 | 配列["キー"] = 1 配列.キー = 1 | ||||||||||||||||||
46 | |||||||||||||||||||||
47 | ソート | QSORT(配列) | table.sort(配列) | ||||||||||||||||||
48 | 末尾に追加 | 配列["新規キー"] = 値 | table.insert(配列, データ) | ||||||||||||||||||
49 | 位置を指定して追加 | なし | table.insert(配列, 添え字, データ) | ||||||||||||||||||
50 | 削除 | dummy = 変数[キー, HASH_REMOVE] | 削除データ = table.remove(配列, 添え字) 添え字を省略した場合は最後のデータ | ||||||||||||||||||
51 | |||||||||||||||||||||
52 | |||||||||||||||||||||
53 | 演算子 | 算術演算子 | + 加算 - 減算 * 積算 / 除算 mod 剰余 | + 加算 - 減算 * 積算 / 除算 % 剰余 ^ 累乗 | |||||||||||||||||
54 | 関係演算子 | < 小さい > 大きい <= 小さいか等しい >= 大きいか等しい = 等しい <> 等しくない | < 小さい > 大きい <= 小さいか等しい >= 大きいか等しい == 等しい ~= 等しくない | ||||||||||||||||||
55 | 論理演算子 | and かつ or または ! でない | and かつ or または not でない | ||||||||||||||||||
56 | 文字列連結演算子 | "hoge" + "hoge" | "hoge".."hoge" | ||||||||||||||||||
57 | 長さ演算子 | なし。 length() 関数を使う | # ただし、nil を終端とみなす | ||||||||||||||||||
58 | 演算子の優先順位 | ( ) ! (論理否定 *, /, MOD +, - >, <, =, >=, <=, <> AND OR, XOR | ^ not # 単項- * / % + - .. < > <= >= ~= == and or | 優先順位高い 優先順位低い | |||||||||||||||||
59 | |||||||||||||||||||||
60 | ブロック | スクリプトの実行単位 | ファイル ファイル名.uws | チャンク { 文 } | |||||||||||||||||
61 | ブロック | 単独ブロックはない | do ~ end | ||||||||||||||||||
62 | スコープ | module, 関数内はローカル | スコープはブロックで区切られるが、変数はローカル宣言しない限りグローバル変数となる。 ローカル変数の定義は以下。 local 変数 | ||||||||||||||||||
63 | |||||||||||||||||||||
64 | 制御構文 | if 単文 | if 条件式1 then 処理 | # 複文と同じだが、1行でも書ける。 if 条件式 then 処理 end | |||||||||||||||||
65 | if 複文 | ifb 条件式1 処理 elseif 条件式2 処理 else 処理 endif | if 条件式1 then 処理 elseif 条件式2 then 処理 else 処理 end | ||||||||||||||||||
66 | goto | なし | goto ラベル # Lua 5.2 から ::ラベル:: | ||||||||||||||||||
67 | ループの break | break 段数 // 段数文のループを抜ける。省略可能。 | do break end # break はブロック末尾でのみ使用可能。 # そのほかの場所で書く場合は do~end でブロックを書く必要がある。 # 1行で次のように書くことができる。 do break end | ||||||||||||||||||
68 | while | while 条件式 繰り返す処理 wend | while 条件式 do 繰り返す処理 end | ||||||||||||||||||
69 | repeat | repeat 繰り返す処理 until 条件式 | repeat 繰り返す処理 until 条件式 | ||||||||||||||||||
70 | for | // for 初期値, 終了値, ステップ数 // ステップは省略可 for i = 0 to 2 step 1 処理 next | # for 初期値, 終了値, ステップ数 # ステップは省略可 for i = 0, 2, 1 do 処理 end | ||||||||||||||||||
71 | for (配列) | for i = 0 to length(配列)-1 print 配列[i] next | for i, v in ipairs(配列) do print(i, v) end # 配列の場合 ipairs() # 連想配列の場合 pairs() | ||||||||||||||||||
72 | |||||||||||||||||||||
73 | |||||||||||||||||||||
74 | 関数 | 関数定義(戻りあり) | FUNCTION 関数名( 引数 ) 処理 RESULT = 戻り値 FEND # Var で参照定義 | function 関数名(引数) 処理 return 戻り値1, 戻り値2 end 関数名 = function(引数) でもよい | |||||||||||||||||
75 | 関数定義(戻りなし) | PROCEDURE 関数名( 引数 ) 処理 FEND | function 関数名(引数) 処理 end | ||||||||||||||||||
76 | |||||||||||||||||||||
77 | 複数の戻り値(関数側) | PROCEDURE 関数名( var 引数1, var 引数2 ) 引数1 = 戻り値1 引数2 = 戻り値2 FEND | function 関数名(引数) 処理 return 戻り値1, 戻り値2 end | ||||||||||||||||||
78 | 複数の戻り値(呼び出し側) | 関数名( 引数1, 引数2 ) | 変数1, 変数2 = 関数名() | ||||||||||||||||||
79 | 可変引数 | 関数定義で代入すると、省略できる | function 関数名(...) print(...) a={...} # 可変引数→連想配列 end | ||||||||||||||||||
80 | |||||||||||||||||||||
81 | |||||||||||||||||||||
82 | 以下、Lua のみの仕様 | ||||||||||||||||||||
83 | |||||||||||||||||||||
84 | コルーチン | コルーチンは関数の途中で処理を中断し、また関数を呼ぶと前回中断したところから 処理を再開できる仕組み。 function func() coroutine.yield "処理中断1" coroutine.yield "処理中断2" coroutine.yield "処理中断3" end -- コルーチンを作成 local co = coroutine.wrap(func) print(co()) -- 処理中断1 print(co()) -- 処理中断2 print(co()) -- 処理中断3 | |||||||||||||||||||
85 | |||||||||||||||||||||
86 | |||||||||||||||||||||
87 | |||||||||||||||||||||
88 | |||||||||||||||||||||
89 | |||||||||||||||||||||
90 | |||||||||||||||||||||
91 | |||||||||||||||||||||
92 | |||||||||||||||||||||
93 | |||||||||||||||||||||
94 | |||||||||||||||||||||
95 | |||||||||||||||||||||
96 | |||||||||||||||||||||
97 | |||||||||||||||||||||
98 | |||||||||||||||||||||
99 | |||||||||||||||||||||
100 |