Lua stdlib – base.lua

stdlibというLuaを拡張するライブラリを調べてみます。http://luaforge.net/projects/stdlib/ それぞれのファイルに定義されていう関数を見ていこうと思います。意味を理解できなくても、どんどん進めることにします。

通常このモジュールをrequireするようです。勘違いでした。通常は、require “std” すると、各モジュールを読み込むようになってました。

metamethod(x, n)

オブジェクトx に属しているメソッド名n のメソッドを返却する。

render (x, open, close, elem, pair, sep, roots)

tostringなどで使われる、オブジェクトの文字列表現を作成する関数。

こんなの、グローバルに公開する意味あるのかな?

tostring(x)

標準で用意されたtostringを_tostringに退避して、自前のtostringを定義しています。

renderを使って文字列表現に変換しています。

print(…)

標準で用意されたprintを_printに退避して、自前のprintを定義しています。

引数の各値にtostringを掛けているだけみたいです。

prettytostring (t, indent, spacing)

これは、テーブルを見易いように整形する、tostringの豪華版みたいです。

totable (x)

引数xのテーブル表現を返します。

引数xに、__totableがあったら、__totableを実行した結果を返してます。

引数xがテーブルならそのまま返します。そうでなければnilを返してます。

でも、__totable ってのは、何者だろう?

pickle (x)

文字列に変換する。シリアライズするものみたいです。

例えば、Webアプリのセッション情報を保存しとくのに、pickleしてからファイルに保存するとか。

id (…)

引数をそのまま返してる。

pack (…)

引数全てを要素に持つテーブルを返却する。

bind (f, …)

curryに使われてる。カリー化のためのもの?

curry (f, n)

カリー化のように見えるけど、どうやって使うかわからない。

compose (…)

関数を作る?どうやって使うかわからない。

eval (s)

文字列をコードとして実行する。

ripairs (t)

ipairsのリバース版

treeIter (t)

ツリー版のイテレータ。コルーチンを使ってる。

assert (v, …)

assert。標準で用意されたasertを退避してないけど、上書きしちゃってるのかな?

warn (…)

メッセージを標準エラー出力に出力する。

die (…)

メッセージを標準エラー出力に出力してから、プログラムを終了する。

op + – * / and or not == ~=

例えば、op[“+”] は、足し算の関数。引数は、2つではなく、複数とれるようになっている。

まぁ、これだけでも使い道はあるけど、他のファイルで巧く使ったりしてるのかな?

以上、半分くらいは、理解してないけど、他のファイルを読めばわかるかもしれない。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください