Lua標準ライブラリ


基本ライブラリ

名前 説明
_G グローバル変数を全て含むテーブルです。_G自身も含まれます。
_VERSION Luaのバージョンを示す文字列です。
拡張編集 0.90d3時点での内容は"Lua 5.1"です。
dofile(filename) 外部ファイルをLuaのコードとして実行します
load(func[, chunkname]) func は Lua のコードとして解釈できる文字列を返す関数です。
load 関数は nil か空文字列が返されるまで func 関数を実行し続け、
その後、返された文字列すべてを連結したコードを関数として返します。
func 関数が返した文字列群が変換不能だった場合、
nil とエラーメッセージを返します。
文字列 chunkname はエラーメッセージ中に表示されるチャンク名です。
loadfile([filename]) filename のファイルの内容をLuaの関数に変換して返します。
引数省略時は標準入力から読み込みます。AviUtl拡張編集では不可能?
loadstring(str, [chunkname]) 第1引数が文字列である事以外、load 関数と同等です。
※Lua 5.2では廃止されます。load 関数が同等の機能を引き継ぎます
tonumber(e[, base]) e が数値か、数値に変換可能な文字列なら数値を、それ以外なら nil を返します
base には e を変換する際に使う基数を 2~36 の範囲で指定します
tostring(e) e を文字列に変換します
e のメタテーブルが __tostring メソッドを持っていたら、そちらを呼び出します
unpack(t[, i[, j]]) テーブル t の、i 以上 j 以下の整数の要素すべてを返します
省略時、i は 1、j は #t の値になります
※Lua 5.2からはテーブルライブラリになり、table.unpack となります
select(i, ...) i が整数なら i+1 番目以降の引数の値を全て返します
i が文字列 "#" なら i を除く引数の数を返します
pairs(t) next 関数、t、nil の3つの値を返します
for k, v in pairs(t) do ... end
上のコードはtの要素すべてに対して処理を行います
k は要素名、v はその値です
ipairs(t) イテレータ関数、t、0 の3つの値を返します
for i, v in ipairs(t) do ... end
上のコードは 1 から連続する t の正の整数のインデックスの要素すべてに対して処理を行います
iはインデックス、vはその値です
next(t, i) テーブル t の要素 i の次の要素の名前と値を返します
i が nil なら t の最初の要素の名前と値を返します
getmetatable(t) t のメタテーブルを返します
t のメタテーブルが __metatable メソッドを持ってたら、その値を返します
setmetatable(t, meta) テーブル t のメタテーブルを設定します
テーブル型以外の値にメタテーブルを設定するには、C言語側で処理する必要があります
rawequal(v1, v2) メタメソッドを呼ばずに v1 と v2 が等しいか調べます。戻り値はブーリアンです
rawget(t, i) メタメソッドを呼ばずに t[i] の値を取得します。t はテーブルでなければなりません
rawset(t, i, v) メタメソッドを呼ばずに t[i] に v を代入します。t はテーブルでなければなりません
type(v) v の型を文字列で返します。返される文字列は以下のどれかです
"nil"
"boolean"
"number"
"string"
"table"
"function"
"thread"
"userdata"
getfenv(f) 指定された関数の現在の環境を返します。
f には Lua の関数かスタックレベルを指定します。
※Lua 5.2では削除されます
setfenv(f, t) 指定された関数の現在の環境を設定します。
※Lua 5.2 では削除されます
pcall(f[, arg1, arg2, ...]) 関数 f に指定された引数を渡して実行します。
関数 f 内でエラーが発生してもプログラムを中断せずに、false とエラーコードを返します。
成功時は true と関数 f の戻り値を返します。
xpcall(f, err) 関数 f を実行し、エラーが発生したらエラーメッセージを引数に関数 err を実行します。
関数 f 成功時は true と関数 f の戻り値を返します。
失敗時は false と関数 err の戻り値を返します。
error(mes[, level]) エラーメッセージ mes を送出します
level はエラーメッセージに付加する位置情報を指定します
1 なら error 関数を呼び出した位置
2なら error 関数を呼び出した関数を呼び出した位置
level が 0 か関数呼び出しの深度以上の場合、位置情報は付加されません
assert(v[, mes]) v が nil か flase だった時、エラーメッセージ mes を送出します
mes 省略時のエラーメッセージは "assertion failed!" になります
print(e1, e2, ...) 受け取った引数を tostring で変換してから標準出力に表示します
AviUtl拡張編集では表示させる手段が無い?
collectgarbage(opt[, arg]) ガベージコレクタへの汎用インターフェイスです。
gcinfo() Luaが使用中のメモリをキロバイト単位で返します。
collectgarbage に "count" を渡して呼び出すのと同じです。
※使用非推奨
newproxy([f]) Lua のドキュメントに載っていない非公開の関数。
サイズ 0 のフルユーザーデータを作成します。
引数なし、あるいは false を渡した場合、メタテーブル無しのユーザーデータを返します。
true を渡した場合、空のメタテーブルを設定したユーザーデータを返します。
ユーザーデータ型を渡した場合、そのユーザーデータとメタテーブルを共有するユーザーデータを返します。
参考資料はこちら

数学ライブラリ

名前 説明
math.pi 円周率を表す定数です
math.huge 正の無限大の値を表す定数です
math.abs(x) 与えられた値の絶対値を返します
math.floor(x) 小数点以下を切り捨てて整数にします
math.ceil(x) 小数点以下を切り上げて整数にします
math.modf(x) xの整数部と小数部の2つの値を返します
math.min(a,b,...) 与えられた引数の中から最も小さい値を返します
math.max(a,b,...) 与えられた引数の中から最も大きい値を返します
math.sqrt(x) xの平方根の値を返します。x^0.5の式でも代用できます
math.pow(x,y) xのy乗の値を返します。x^yの式でも代用できます
math.log(x[,base]) baseを底とするxの対数を返します。base省略時は自然対数を返します
math.log10(x) 10を底とするxの対数を返します
※この関数はLua 5.2で廃止予定です。math.logでの代用を推奨します
math.deg(r) ラジアンを角度(°)に変換します
math.rad(r) 角度(°)をラジアンに変換します
math.sin(r) ラジアンからサインの値を得ます
math.cos(r) ラジアンからコサインの値を得ます
math.tan(r) ラジアンからタンジェントの値を得ます
math.asin(v) サインの値からラジアンを得ます。戻り値は-π/2 ~ π/2の間になります
math.acos(v) コサインの値からラジアンを得ます。戻り値は-π/2 ~ π/2の間になります
math.atan(v) タンジェントの値からラジアンを得ます。戻り値は-π/2 ~ π/2の間になります
math.atan2(y,x) 座標からラジアンを得ます
math.sinh(r) 双曲線正弦の値を返します
math.cosh(r) 双曲線余弦の値を返します
math.tanh(r) 双曲線正接の値を返します
math.mod(x, y) math.fmodと同じ ※使用非推奨
math.fmod(x, y) xをyで割った余りを返します
%演算子との違いは、片方が負の値の時の戻り値のみ?
math.ldexp(m, e) m*2^eの値を返します。eが実数だと四捨五入されて整数にされるようです
math.frexp(x) x == m*2^eとなるようなmとe返します
mは0.5以上1未満、eは整数です
math.random([m[,n]]) 乱数を返します
拡張編集の乱数とは違い、呼び出し毎に値が変わります
引数なしで呼ぶと0以上1未満の実数を返します
数値mを渡すと、1以上m以下の整数を返します
数値mとnを渡すと、m以上n以下の整数を返します
math.randomseed(x) 乱数のシード値を設定します

文字列ライブラリ

名前 説明
string.len(str) 文字列の長さを取得します。#strでも代用できます
string.upper(str) 文字列str中のアルファベットを大文字にした文字列を返します
アルファベットと同じ値の2バイト文字も変換されるので注意
string.lower(str) 文字列str中のアルファベットを小文字にした文字列を返します
アルファベットと同じ値の2バイト文字も変換されるので注意
string.reverse(str) 文字列strを逆にした文字列を返します
2バイト文字は正しく処理されません
string.rep(s, n) 文字列 s を n 回繰り返した文字列を返します。
string.char(i1, i2, ...) 引数の数値と等しい文字コードの文字を連結した文字列を返します
string.byte(s[, i[, j]]) 文字列 s の i 番目から j 番目までの文字コードの値を返します。
省略時 i は 1、j は i と同じになります。
string.format(fmt, ...) 任意のフォーマットで記述します。
string.sub(s, i[, j]) 文字列 s の i 番目から j 番目の文字までの部分文字列を返します。
j 省略時は文字列の末尾になります。
i と j には負の値を指定することも出来、その場合文字列末尾からの位置になります。
string.find(s, p[, init[, plain]]) 文字列 s 内でのパターン p の最初のマッチの開始位置と終了位置を返します。
マッチしなかった場合はnilを返します。
init には検索開始位置を指定します。
plain が true の場合パターンマッチングは行われず、単純な部分文字列検索になります。
パターン内にキャプチャが指定されていた場合、その内容が3番目以降の戻り値として返されます。
string.match(s, p[, init]) 文字列 s 内のパターン p にマッチする部分文字列を返します。
パターン内にキャプチャがあればそれを返します。
init は検索開始位置をしていします。
string.gsub(s, p, repl[, n]) 文字列 s 内のパターン p にマッチする部分を repl で置換します。
repl には文字列、テーブル、関数のいずれかを指定します。
n には置換が行われる回数を指定します。
string.gmatch(s, p) 汎用 for 文で使用します。
文字列 s 内のパターン p にマッチする部分文字列を返すイテレータ関数を返します。
string.gfind string.gmatch と同じ ※使用非推奨
string.dump(f) 関数 f のバイトコードを文字列として返します

テーブルライブラリ

名前 説明
table.insert(t, [n,] v) テーブル t の位置 n に v を挿入します。
n の位置にすでに要素がある時は、それ以降の要素を1つ後ろにずらします。
n 省略時は t の末尾に追加します。
table.remove(t, n) テーブル t の位置 n の要素を削除して、それ以降の要素を1つ前にずらします。
table.sort(t[, f]) テーブル t の1から連続した正の整数のインデックスの要素を並び替えます。
table.sort は t の先頭から要素2つを関数 f に渡して呼び出し、
関数 f が偽の値を返したとき、2つの値の位置を入れ替えます。
f 省略時は < 演算子で比較した結果によってソートします。
table.concat(t[, sep[, i[, j]]]) テーブル t の i 番目から j 番目までの要素の間に文字列 sep を挟み、
それら全てを連結した文字列を返します。
省略時、sep は空文字列、i は1、j はテーブルの長さになります。
concat メタメソッドは呼ばれない?
table.maxn(t) テーブル t の正の最大の数値インデックスを返します。
※Lua 5.2で廃止
table.getn(t) テーブル t の1から連続した正の最大インデックスを返します。
※使用非推奨。長さ演算子 # で代用してください
table.setn ※廃止済み。使用できない関数
table.foreach ※使用非推奨。汎用 for 文で代用してください
table.foreachi ※使用非推奨。汎用 for 文で代用してください

入出力ライブラリ

名前 説明
io.open(filename[, mode]) ファイル名 filename を文字列 mode で指定したモードで開きます。
成功すればファイルハンドルを、失敗すれば nil とエラーメッセージを返します。
mode の内容は以下のいずれかです。
"r" : 読み込みモード、省略時はこの値
"w" : 書き込みモード
"a" : 追記モード
"r+" : 更新モード(現在のファイルの内容は消えない)
"w+" : 更新モード(現在のファイルの内容は消える)
"a+" : 追記モード、ファイルの末尾にデータを追加する
mode の最後に文字 'b' を追加するとバイナリモードでファイルを開きます。
io.input([file]) 引数にファイル名を指定すると、そのファイルをテキストモードで開き、
そのハンドルをデフォルト入力ファイルに設定します。
引数にファイルハンドルを指定すると、そのハンドルをデフォルト入力ファイルに設定します。
引数なしで呼ぶと、現在のデフォルト入力ファイルを返します。
エラー発生時、この関数はスクリプトの実行を中断します。
io.output([file]) デフォルト出力ファイルが対象であること以外、io.input と同じです。
io.close([file]) 指定したファイルを閉じます。
引数省略時はデフォルト出力ファイルを閉じます。
io.read([fmt1, fmt2, ...]) デフォルト入力ファイルから指定した書式でデータを読み込みます。
指定した書式で読み込めない場合は nil を返します。
使用できる書式は以下の通りです。
"*l" : 現在位置から行末まで読み込みます。改行文字は含まれません。ファイル終端では nil を返します。書式省略時はこの書式が使われます。
"*n" : 文字列を数値に変換して読み込みます。ファイル終端では nil を返します。
"*a" : 現在位置からファイル終端まで読み込みます。すでにファイル終端だった場合は空文字列を返します。
数値 : 指定した文字数だけ読み込みます。ファイル終端では空文字列を返します
0 : ゼロを指定すると空文字列を返します。ファイル終端では nil を返します。
io.write(v1[, ...]) デフォルト出力ファイルに引数の値を書き込みます。
引数は数値か文字列でなければなりません。
io.flush() 書き込みバッファに一時的に格納されているデータを、デフォルト出力ファイルに書き出します。
io.type(file) file が有効なファイルハンドルか調べます。
file が開かれているファイルなら文字列 "file" を、
閉じられたファイルなら "closed file" を、ファイルハンドルでなければ nil を返します。
io.lines([filename]) 汎用 for ループで使用する関数です。

for line in io.lines(filename) do ... end
上記のコードは名前が filename のファイルを読み込みモードで開き、
ループの度にファイルから1行読み込んで変数 line に代入し処理します。

ファイル終端まで達したら、この関数はファイルハンドルを閉じます。
ファイル名を省略した場合、デフォルト入力ファイルから読み込みます。
この場合、終端まで達してもハンドルを閉じません。
io.tmpfile() 一時ファイルを作成し、そのハンドルを返します。
この関数で作られたファイルは AviUtl 終了時に自動的に削除されます。
io.popen(prog[, mode]) 詳細不明。
ファイル名 prog で指定した外部プログラムを起動し、
おそらく、それの標準入力/出力に対して読み込み/書き込みをする関数?
io.stdin 標準入力のファイルハンドルです。AviUtl拡張編集では使用できない?
io.stdout 標準出力のファイルハンドルです。AviUtl拡張編集では使用できない?
io.stderr 標準エラー出力のファイルハンドルです。AviUtl拡張編集では使用できない?
file:read([fmt1, ...]) ファイルハンドル file の内容を読み込みます。
詳細は io.read 参照してください。
file:write(v1[, ...]) ファイルハンドル file に対して書き込みます。
詳細は io.read 参照してください。
file:close() ファイルハンドル file を閉じます。
file:seek([whence[, offset]]) ファイルハンドル file のファイルポインタの位置を、
whence で指定した基準位置から offset 分移動した場所に設定し、
先頭から数えたファイルポインタ位置の数値を返します。
whence には以下の文字列のいずれかを指定します。
"cur" : 現在のファイルポインタの位置が基準位置になります
"set" : ファイルの先頭が基準位置になります
"end" : ファイルの末尾が基準位置になります
引数省略時、whence は "cur"、offset は 0 になり、戻り値は現在のファイルポインタの位置になります。
file:flush() ファイルハンドル file の書き込みバッファに溜まっているデータをファイルに書き込みます。
file:lines() 汎用 for ループで使用する関数です。
ループの度にファイル file から1行ずつ読み込みます。
この関数はファイル終端に達してもファイルを閉じません。
file:setvbuf(mode[, size]) 出力ファイル file のバッファリングモードを設定します。
設定可能なモードは以下の通りです。
"no" : バッファリングを行わず即座にファイルに書き込みます。
"full" : バッファが一杯になるか、file:flush, file:close を実行したときにファイルに書き込みます。
"line" : 1行ずつ(改行文字毎に)ファイルに書き込みます。
mode を "full" か "line" に指定したときは size でバッファサイズを指定できます。

OS機能

名前 説明
os.time([table])  
os.difftime(t2, t1) 時刻 t1 から時刻 t2 までの秒数を返します
os.date([fmt [, time]])  
os.clock() Luaステートが初期化されてから経過した秒数を返します

AviUtl拡張編集のLuaステートの初期化は
初めてスクリプトが実行される直前に行われるようです
os.remove(filename) 指定された名前のファイル、またはディレクトリを削除します
os.rename(old, new) 名前が old のファイル、またはディレクトリを new にリネームします
os.tmpfile() 一時ファイルの名前として使えるファイル名を返します
os.getenv(varname) プロセスの環境変数 varname の値を返します
os.setlocale(locale [, category])  
os.execute([cmd]) OSのシェルに文字列 cmd を渡して実行します
cmd 省略時には、シェルが利用可能ならば非ゼロ、そうでなければゼロを返します
os.exit([code]) ホストプログラム(AviUtl)を終了させます

code にはエラーがあればそのエラーコードを指定します
省略時は成功を表すコードです

モジュール

名前 説明
require(modname) モジュール modname を読み込みます

package.loaded[modname] が真の場合は読み込みを行わず、その値を返します

package.loaded[modname] が偽の時、
テーブル package.loaders の関数(ローダ)をインデックス 1 から順に、
modname を渡して呼び出します

ローダが関数を返すと、require はその関数に modname を渡して呼び出し
その戻り値を package.loaded[modname] に代入して、その値を返します
戻り値が無い、あるいは nil の場合は true を代入して返します

ローダの戻り値が関数では無い場合、require は次のローダを同様に呼び出します
全てのローダが関数を返さなかった時
require はローダの戻り値の内、文字列に変換可能な物をすべてエラーメッセージとして送出します
module(name[, ...]) この関数呼び出し以降に定義されたグローバルな変数を、
文字列 name で指定した名前のテーブルに格納するようにします。
後続の引数には、テーブル name を受け取る関数を指定します。
一般的には package.seeall を指定して、モジュール name 内で標準ライブラリを使用できるようにします。
※Lua 5.2 では廃止されます
package.loadlib(libname, funcname) libname で指定した DLL から名前が funcname の関数を取得して返します

この関数は package.cpath で列挙されたフォルダから libname を探すのではありません
libname にはカレントディレクトリからの相対パスか、絶対パスを指定する必要があります
package.loaded 読み込み済みのモジュールと同名の変数が格納されたテーブルです

このテーブル内に require 関数に指定されたモジュール名と同名の変数があり、その値が真なら
require はファイルを読み込まずテーブルの値を返します
package.preload モジュールの読み込み方法を指定するためのテーブルです

require 関数で指定されたモジュールと同名の変数がこのテーブル内にあれば、
require はその値を関数として呼び出します
package.loaders require 関数から呼び出される関数を格納したテーブルです
デフォルトでは4つの関数があります
(以下の説明中の modname は require 呼び出し時に渡された引数です)

第1の関数は package.preload[modname] の値を返します

第2の関数は package.path を参考に Lua のソースコードを探索し
見つかればそれを関数化して返します

第3、第4の関数は package.cpath を参考に DLL を探索し
その中の対応する名前があれば、それを返します
package.path require が Lua のコードを探索するフォルダを列挙した文字列です

AviUtl拡張編集では
1.拡張編集本体 (exedit.auf) があるフォルダ
2.script フォルダ。ただし実行中のスクリプトが script のサブフォルダ内の物であればサブフォルダ
上記 2 フォルダの中の拡張子が .lua のファイルが対象になっています

この値はスクリプト呼び出しの度に設定されなおされているようです
package.cpath require が DLL を探索するフォルダを列挙した文字列です

AviUtl拡張編集では、対象拡張子が .dll であること以外 package.path と同じです
package.config require 関数呼び出し時に置換される記号をまとめた文字列です

置換される記号はコンパイル時に決定しているので、この値は確認用です
package.seeall  

コルーチン

名前 説明
coroutine.create(f) 関数 f を本体とするコルーチンを作成します
coroutine.resume(co [, arg1, arg2, ...]) コルーチンを実行します
coroutine.status(co) コルーチンの状態を文字列で返します
coroutine.yiled([v1, v2, ...]) コルーチンを中断します
coroutine.running() 走行中のコルーチンを返します
coroutine.wrap(f)  

デバッグライブラリ

名前 説明
debug.debug()  
debug.getmetatable(object) object のメタテーブルを返します
debug.setmetatable(object, t) object がテーブル型以外でもメタテーブルを設定します
debug.getlocal(level, i) スタックレベル level の i 番目のローカル変数の名前と値を返します
debug.setlocal(level, i, v)  
debug.getupvalue(f, i) 関数 f の i 番目の上位値の名前と値を返します
上位値が存在しなければ nil を返します
debug.setupvalue(f, i, v) 関数 f の i 番目の上位値に v を代入します
i が存在しなければ nil を、そうでなければ上位値の名前を返します
debug.gethook() 現在のフック関数、フックマスク、フックカウントを返します
debug.sethook(hook, mask [, count])  
debug.getfenv(object)  
debug.setfenv(object, t)  
debug.getregistry() レジストリテーブルを返します
debug.getinfo(f [, what])  
debug.traceback([mes])  

  • 最終更新:2012-10-19 00:16:52

このWIKIを編集するにはパスワード入力が必要です

認証パスワード