Show page source of 資料-lualibsについて #68353

= lualibsについて =

lualibs は最低限のライブラリしか用意されていない Lua でプログラミングをするためにあると便利な関数を提供するパッケージです.

(マニュアルに相当するものが見当たらないのですが,ご存知の方がいればリンクを追加して下さい.)

== 使い方 ==

Lua プログラムや `\directlua` 中に `require('lualibs')` と書くと全てのモジュールが読み込まれます.一部のモジュールのみを読み込みたい場合は `require('lualibs-<module name>')` と書きます.

以下ではよく使う関数についての簡単な解説を書きます.

== lualibs-table ==
テーブル操作を行うライブラリです.

=== table.fastcopy(old) ===
テーブルの深いコピーを作成して返します.

 * old: コピーしたいテーブル.

Lua においてもテーブルの代入操作は主要な言語と同じく参照の代入となります.
{{{
> t = {1, 2}
> print(t)
table: 0x62cca0
> s = t
> print(s)
table: 0x62cca0
> s[2] = 3
> print(t[2])
3
}}}
そのため,テーブルの中身をコピーしようと思うと for 文を使って各要素をコピーする必要があります.しかし,テーブルの要素がまたテーブルである場合にも対応するためには再帰的に for 文を使う必要があります.table.fastcopy() はこの操作を実装したものです.
{{{
> t = {1, 2}
> print(t)
table: 0x6307a0
> s = table.fastcopy(t)
> print(s)
table: 0x642280
> s[2] = 3
> print(t[2])
2
}}}

=== table.tofile(filename,root[,name[,reduce[,noquotes[,hexify]]]]) ===
テーブルの中身を全てテキスト形式でファイルに書き出します.

 * filename: 出力先のファイル名.
 * root: 出力したいテーブル.
 * name: 出力先のファイル内でのテーブルの名前.デフォルトは "t" で,`<name>={<root の中身>}` の形式で出力される."return" にすると `return {<root の中身>}` と出力される.
 * reduce: 値の出力を Lua で読める安全な形式にするかどうか.つまり,true なら %s,false なら %q になる.デフォルトは false.
 * noquotes: キーの出力形式の指定.true ならば `<key>=<value>`,false ならば `[<key>]=<value>` になる.デフォルトは false.
 * hexify: 数値の出力を16進にするかどうか.デフォルトは false.

便利な使い方として,Unix 系 OS ではデバッグ時に `table.tofile('/dev/stdout', <table>)` とすればテーブルの中身を端末に出力できます.