・関数の戻り値でテーブルを初期化する場合
function f () return "x","y","z" end という関数fがあるとする。 t = {f()} は t = {"x","y","z"} と同じ t = {"a","b",f()} は t = {"a","b","x","y","z"} と同じ t = {"a","b",f(),"c"} は t = {"a","b","x","c"} と同じ {}の最後に関数のときだけ、戻り値が全部格納されるらしい。 また、戻り値の展開を回避したい時はt = {(f())}と、関数をカッコでくくるといい。 ・テーブルの各要素を巡回 これにはいくつか方法がある。 1.for&pairs() ●書き方 for k,v in pairs(t) do end ●概要 一般的な書き方。巡回する順番は不定である。 2.for&ipairs() ●書き方 for i,v in ipairs(t) do end ●概要 t[1]から、最初にnilが返ってくるまでの間、ループを繰り返す。 テーブルを配列のように扱っている時はこの方法を使う。 3.while&next() ●書き方 k,v = next(t) while(k) --処理 k,v = next(t,k) end ●概要 たぶん1.と変わらない。 4.for&# ●書き方 for i = 1,#t do end ●概要 ipairs()を使用した場合、途中の要素がnilだと(例:t = {1, nil, 3})、テーブルの終端に到達する前に処理が終了してしまう。要素にnilが含まれている場合でも終端まで処理したい場合はipairs()ではなくこちらの方法を使う。 ・table.concat() t = {"1","2","3"} というテーブルを、 1,2,3 といったcsvみたいな文字列にしたい場合は、table.concat(t, ",")で事足りる。 (注意事項) 連結されるのはキーが数値の要素だけで、キーが文字列の要素は含まれない(例:t["x"]など)。 また、キーが数値の場合でも、キーの間が飛んでいる場合は、連続している部分のみ連結する。(例:t[2]の次がt[4]である場合、t[1]とt[2]の要素だけを連結する)
by lyricist_m
| 2009-04-27 08:21
| NSLua
|
web拍手を送る
個人サイト
検索
カテゴリ
以前の記事
最新のトラックバック
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧
リンク
サークル関係
NightShifts k'のBlog NScripter関係 ■ Takahashi's Web ■ Binary Heaven NScripter Scripting Factory NScripter-Tips nscrplg NS栗 Withoutlimit 永字八法 貴史たま+MEのHP 君影草工房 ※以下、更新停止中 nscr SGP -Sphere Game Production 花鳥風月 牛小屋 |
ファン申請 |
||