Lua

残り、不明なもの

3.9 - メタテーブル lua_getmetatable, lua_setmetatable 3.12 - 環境操作 lua_getfenv, lua_setfenv 3.17 - Cのクロージャの定義 3.19 - Cでのエラー処理 3.20 - スレッド 4 - デバッグインタフェイス setfenv xpcall 5.2 - コルーチン操作

グローバル変数 _PROMPT

まんま $ lua -e"_PROMPT='myprompt> '" -i myprompt>

コマンドライン引数

#!/usr/bin/env lua function print_table(t) for k,v in pairs(t) do print(k, v) end end print_table(arg) で、 $ lua -e 'x=1' 2009020300.lua -1 x=1 -3 lua 0 2009020300.lua -2 -e n 0 $ lua -e 'x=1' 2009020300.lua aaa bbb -1 x=1 1 aaa -3 lua 0 …

スタンドアロンのLua

$ lua Lua 5.0.2 Copyright (C) 1994-2004 Tecgraf, PUC-Rio > print("foo") foo >$ lua - print("foo") foo$ lua -e 'print("foo")' foo$ lua -v Lua 5.0.2 Copyright (C) 1994-2004 Tecgraf, PUC-Rio#!/usr/bin/env lua x = 1 で、 $ lua -i 2009020200.lu…

debug.traceback()

#!/usr/bin/env lua debug.traceback() や #!/usr/bin/env lua debug.traceback("*MESSAGE*") や #!/usr/bin/env lua function foo() debug.traceback() end foo() 出力なし。どういうものなんだっけ?

debug.sethook()

#!/usr/bin/env lua function foo(x) print("in foo()", x) end debug.sethook(foo, "c") print("0") foo() print("1") foo() print("2") debug.sethook() print("3") foo() print("4") で、 in foo() call in foo() call 0 in foo() call in foo() call in …

debug.setlocal()

debug.getupvalue(), debug.setupvalue() とばし #!/usr/bin/env lua function foo(x, y) print(debug.getlocal(1, 1)) print(debug.getlocal(1, 2)) print(debug.getlocal(1, 3)) print(x, y) debug.setlocal(1, 1, 10) print(x, y) end foo(1, 2) で、 x 1…

debug.getlocal()

#!/usr/bin/env lua function foo(x, y) print(debug.getlocal(1, 1)) print(debug.getlocal(1, 2)) print(debug.getlocal(1, 3)) end foo(1, 2) で、 x 1 y 2 nil

debug.getinfo()

#!/usr/bin/env lua debug.debug() で、 lua_debug> print(debug.getinfo(math.abs)) table: 0x8050a40 lua_debug> table.foreach(debug.getinfo(math.abs), function(k,v) print(k,v); return nil; end) source =[C] what C func function: 0x804f5f0 short…

debug.gethook()

#!/usr/bin/env lua debug.debug() で、 lua_debug> print(debug.gethook()) nil 0

debug.debug()

#!/usr/bin/env lua debug.debug() で、 lua_debug> print("foo") foo

os.tmpname()

#!/usr/bin/env lua print(os.tmpname()) print(os.tmpname()) で、 lua: ./2009012500.lua:3: `tmpname' not supportedもう、ない?

os.time()

#!/usr/bin/env lua print(os.time()) print(os.time({ year = 2009, month = 1, day = 24 })) で、 1233097898 1232766000

os.setlocale()

#!/usr/bin/env lua print(os.setlocale("hoge")) print(os.setlocale("ja_JP.eucJP")) で、 nil ja_JP.eucJPどこが変わるのか分からないけど。時間とかか???

os.rename()

#!/usr/bin/env lua print(os.rename("foo", "bar")) print(os.rename("foo", "bar")) で、 true nil foo: No such file or directory 2

os.remove()

#!/usr/bin/env lua print(os.remove("foo")) print(os.remove("foo")) で、 true nil foo: No such file or directory 2

os.getenv()

#!/usr/bin/env lua print(os.getenv("hoge")) print(os.getenv("HOME")) で、 nil /home/nnakamur

os.exit()

#!/usr/bin/env lua print("1") --os.exit(1) os.exit() print("2") で、 1

os.execute()

#!/usr/bin/env lua os.execute("echo foo") で、 foo

os.difftime()

#!/usr/bin/env lua t1 = os.time({ year = 2009, month = 1, day = 17 }) t2 = os.time({ year = 2009, month = 1, day = 18 }) print(os.difftime(t2, t1)) で、 86400

os.date()

リファレンスマニュアルなのにフォーマットの説明がないようだ。 以前試したから詳細はスキップ #!/usr/bin/env lua print(os.date()) print(os.date("%Y")) t = os.time({ year = 2009, month = 1, day = 16 }) print(os.date("%Y %m %d", t)) print(os.dat…

os.clock()

#!/usr/bin/env lua print(os.clock()) os.execute("sleep 10") print(os.clock()) x = 0 for i = 0, 1000000 do x = x + 1 end print(os.clock()) で、 0.01 0.01 1.24

file:write()

#!/usr/bin/env lua f = io.open("2009011400.txt", "w") f:write("foo") f:write(100) f:close()

file:seek()

#!/usr/bin/env lua f = io.open("2009011300.lua") print(f:seek()) f:read("*l") print(f:seek()) f:seek("set") print(f:seek()) f:seek("set", 1) print(f:seek()) f:seek("cur") print(f:seek()) f:seek("end") print(f:seek()) f:close() で、 0 19 0 …

file:read()

#!/usr/bin/env lua f = io.open("2009011200.lua") print(f:read("*l")) f:close() で、 #!/usr/bin/env lua#!/usr/bin/env lua f = io.open("2009011201.txt") print("* ", f:read("*n")) print("* ", f:read("*n")) print("* ", f:read(5)) print("* ", f…

file:lines()

#!/usr/bin/env lua f = io.open("2009011100.lua") for line in f:lines() do print(line) end f:close() で、 #!/usr/bin/env lua f = io.open("2009011100.lua") for line in f:lines() do print(line) end f:close()

file:flush()

#!/usr/bin/env lua f = io.open("2009011000.txt", "w") f:write("foo") f:flush() f:close()

file:close()

#!/usr/bin/env lua f = io.open("2009010900.lua") print(f:read("*l")) f:close() で、 #!/usr/bin/env lua

io.write()

#!/usr/bin/env lua io.output("2009010800.txt") io.write("foo")

io.type()

#!/usr/bin/env lua f = io.open("2009010700.lua") print(io.type(f)) f:close() print(io.type(f)) print(io.type(1)) で、 file closed file nil