IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

lua

Luaの対話環境を終了する方法

lua

ないみたいですね。 scripting - How do you cleanly exit interactive Lua? - Stack Overflow

Luaのテーブルのコーディング

lua

通常の配列のコーディング > x = {'a','b','c','d'} > for k,v in pairs(x) do print(k .. " / " .. v) end 1 / a 2 / b 3 / c 4 / d 配列の最後の要素の後にカンマがあっても正常に扱われる。 > x = {'a','b','c','d', } > for k,v in pairs(x) do print(k …

Luaの関数のオーバーロード

lua

luaの関数のオーバーロードは基本的にはできないと思ったほうがよいと思いました。 $ /usr/local/bin/lua Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio > > function foo(v) print(v) end > foo(1) 1 > function foo() print("xxx") end > foo(1) xx…

attempt to index global 'XXX' (a nil value)

lua

attempt to index global 'XXX' (a nil value)はスコープの指定がわるいため。 エラーになる場合 > Foo = { >> Bar = {[1]="Bar-1", [2]="Bar-2"} >> ,[1] = "Foo-1" >> ,[2] = "Foo-2" >> , bazz = function(v) return Bar[v] end >> } > = type(Foo.bazz) …

Luaのメタテーブル

lua

普通の計算 > > = 1 + 1 2 > x = 2 > = 1 + x 3 テーブルを足し算。当然エラーになる。 > y = {} > = 1 + y stdin:1: attempt to perform arithmetic on global 'y' (a table value) stack traceback: stdin:1: in main chunk [C]: in ? メタテーブルに特別…

luaのテーブル

lua

luaのテーブルはfunctionを持つことができます。 > AnyType = { >> [1] = "SCALAR" >> ,[2] = "OBJECT" >> ,[3] = "ARRAY" >> } > > Any = { >> [1] = {attr = "required" , type = "Type" , name = "Any.type" , tag = 1} >> , [2] = {attr = "optional" , …

Luaのtableの自己参照

lua

luaのテーブルはオブジェクトのように扱えますが、下の例のように自己参照はできません。 > Any = { >> AnyType = { >> [1] = "SCALAR" >> ,[2] = "OBJECT" >> ,[3] = "ARRAY" >> } >> , [1] = {attr = "required" , type = "Type" , name = "Any.type" , ta…

luaの型

lua

luaに型がある。typeファンクションで確認ができる。 number > type(1) > = type(1) number > return type(1) == 'number' true function > type (function() print("hello") end) > = type (function() print("hello") end) function > return type (functi…

alienのインストール

lua

alienがあるか確認 > require "alien" stdin:1: module 'alien' not found: no field package.preload['alien'] no file '/usr/local/share/lua/5.2/alien.lua' no file '/usr/local/share/lua/5.2/alien/init.lua' no file '/usr/local/lib/lua/5.2/alien.l…