#author("2019-04-14T01:01:38+09:00","","")
*Luaで良く作る関数 ~debug編~ [#w225167c]

-[[debug.datadumper>#dubug_datadumper]]
-[[prtr-dump>#prtr_dump]]

&aname(dubug_datadumper);
**debug.datadumper [#h807f4c2]
-様々な変数の中身を''ダンプ''して''文字列として返す''。~
複雑なテーブルの中身の表示に使うことが多い。~
~
- debug_datadumper.lua~
#ref(http://lua.tips/download/func/debug/debug_datadumper.lua)
#ref(http://xn--pckzexbx21r8q9b.net/lua_tips/download/func/debug/debug_datadumper.lua)
#sh(lua){{
-- value     : 適当な変数。userdata型以外は大抵何らかの表示が可能。
-- varname   : 戻り値をどのように表示するのか
--             nil : デフォルト 
--             変数ぽい文字列を指定(例:"var")      : "var = dump結果" となる。
--             変数ぽくない文字列を指定(例:"var##") : "var##dump結果" となる。
-- fastmode  : true or false
--             nil or false : デフォルト 
--             true         : いろいろ処理を端折って、高速に処理をする
-- indent    : 整数 or nil
--             nil          : デフォルト。0指定と同じ。
--             整数          : テーブルをダンプする際に、全体を右に寄せる。1当たり半角空白2つ右にずれる。
--
function debug.datadumper(value[, varname, fastmode, indent])
}}


- 使い方~
test.lua
#sh(lua){{
require "debug_datadumper"

-- Define a shortcut function for testing
function dump(...)
  print(debug.datadumper(...), "\n---")
end

-- Simple types:
dump(8)         --> return 8
dump(true)      --> return true
dump()          --> return nil
dump('Hello')   --> return "Hello"

-- Functions:
f1 = print
function f2() return "Hello" end
do
  local val = 9
  function f3() return val end
end
dump(f1)        --> return print
dump(f2)        --> return loadstring("?LuaQ\000...
dump(f3)

-- Tables:
dump({})        --> return {  }
dump({1,2,3})   --> return { 1, 2, 3 }
dump({a=9,b=2}) --> return { a=9, b=2 }
t1 = setmetatable({1},{2})
t2 = {}; t2.next = t2
t3 = {[false] = true, 'Hello', ["key1"] = 10, ["function"] = "keyword", {1,2} }
setmetatable(t3, {__index = t2})
t3[3] = t2
dump(t1)        --> return setmetatable({ 1 },{ 2 })
dump(t2)

dump(t3)

-- Parameters
dump(t1, 'a')   --> a = setmetatable({ 1 },{ 2 })
dump({}, '')    --> {  }
dump({ { {} } },a,true) --> return {{{},},}
 
}}


&aname(prtr_dump);
**prtr-dump [#q00ad657]
-dump専用のしっかりしたモジュールを導入するのであれば、~
[[prtr-dump>http://piratery.net/dump/]]などの選択肢があります。~
~
こちらもファイルは1つだけで済むので、使い勝手は良いと言えるでしょう。~

トップ   差分 履歴 リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS