æ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ãããã®1.522以éã§ã¯ããªã§ãããããLuaãã®ã³ãŒããåŒã³åºãããšãã§ããããã«ãªããŸããããªã§ããã« äžè¶³ããæ©èœãLuaã§èšè¿°ã§ããã ãã§ãªããLua çšã«äœãããã©ã€ãã©ãªããªã§ããã®ããã°ã©ã ã§å©çšããããšãã§ããŸããæ¬çš¿ã§ã¯ããªã§ããïŒLuaã®æŽ»çšæ¹æ³ã«ã€ããŠç޹ä»ããŸãã
æ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ãããã®1.522以éã§ã¯ããªã§ãããããLuaãã®ã³ãŒããåŒã³åºãããšãã§ããããã«ãªããŸãããããã«ãã£ãŠããªã§ããã®ããã°ã©ã ã Lua ã§æ¡åŒµã§ããããã«ãªããŸããã
ãªã§ããã®ããã°ã©ã ãããLua ã®ããã°ã©ã ãå®è¡ãããããã® Lua ã®ããã°ã©ã ããããªã§ããã®ããã°ã©ã ãå®è¡ããããšãã§ããããã«ãªã£ãŠããŸãã
æ³å®ãããçšéãšããŠã¯æ¬¡ã®ãããªãã®ãèããããŸãã
ããã§ã¯ããã£ãããLua ã®ããã°ã©ã ãå®è¡ããŠã¿ãŸãããããªã§ãããã€ã³ã¹ããŒã«ãããšãLua ã®å®è¡ç°å¢ãåæã«ã€ã³ã¹ããŒã«ãããŸããã§ãããããªã§ããããã€ã³ã¹ããŒã«ããŠãã°ãä»ã«å¿ èŠãªãã®ã¯ãããŸããã
ãªã§ããã®ãšãã£ã¿ãèµ·åããããæ¬¡ã®ããã«å ¥åããŠå®è¡ãã¿ã³ãã¯ãªãã¯ããŠã¿ãŠãã ããã
ãprint "Hello, Lua"ããLUAãã
ãã®ããã«ããªã§ããããLuaã®ããã°ã©ã ãå®è¡ããå Žåã«ã¯ã以äžã®ããã«ãLUAããããšããåœä»€ãèšè¿°ããŸãã
[æžåŒ]
ãïŒLUAã®ããã°ã©ã ïŒããLUAãã
ãã®ããã«ããªã§ããã®æååã«ãLua ã®ããã°ã©ã ãäžããã ããªã®ã§ãäœ¿ãæ¹ã¯ãšãŠãã·ã³ãã«ã§ãã
次ã«ãLuaã®ãµã³ãã«ããã°ã©ã ã§ããããéä¹ãæ±ããããã°ã©ã ãå®è¡ããŠã¿ãŸãã
ã
-- éä¹ã®èšç®
function fact(n)
if n == 0 then
return 1
else
return n * fact(n-1)
end
end
print(fact(5))
--
ããLUAãã
ãããå®è¡ãããšã120ãç»é¢ã«è¡šç€ºãããŸãã
Lua ã§æšæºå ¥åºåãæ±ãããå ŽåããããŸããäŸãã°ãã³ã³ãœãŒã«ãžæååãåºåãããio.write()ãããio.read()ãã䜿ãããå Žåã§ããã ããªæã¯ããªã§ãããšãã£ã¿ã®èšå®ã¡ãã¥ãŒããã[èšå®ïŒãªã§ããå®è¡æ¹åŒïŒã³ã³ãœãŒã«]ãã¯ãªãã¯ããŠãã ãããæšæºå ¥åãæšæºåºåã䜿ã£ãåœä»€ãå©çš ã§ããŸãã
â»ããªã§ããå®è¡ã¢ãŒããcnako
ã
io.write("è¶³ãç®ãããŸããæ°å€ãå ¥åããŠãã ããã\n")
a = io.read()
io.write("æ¬¡ã®æ°ãå ¥åããŠãã ããã\n")
b = io.read()
c = a + b
io.write("çã:"..c)
ããLUAãã
ãªã§ããã®ææ³ãæè»ãªã®ã¯ã以åããïŒåœä»€ä»¥å€ãïŒæ¥æ¬èªã䜿ããªããŠãèšè¿°ã§ããç¹ã«ãããŸãããªã§ããã®é¢æ°åŒã³åºãã¹ã¿ã€ã«ã§ Lua ã®ããã°ã©ã ãå®è¡ãããå Žåã以äžã®ããã«èšè¿°ããããšãã§ããŸãã
LUA(` print "Hello, Lua!" `)
Lua ã®ããã°ã©ã ãåŒã³åºãæã«ã¯ããã®æ¹ãèªç¶ã«èŠããã§ããããã
ãã ãããããŸã§ãããªã§ããã®æååã®äžã«ããã°ã©ã ãæžããŠãããšããããšãå¿ããªãããã«ããªããã°ãªããŸããããªã§ããã®æååãâŠãã§ã¯ æ³¢ã«ãã³"{..}"ãæååã®å±éã®æå³ãæã£ãŠããŸããLua ã®ããã°ã©ã ã§æ³¢ã«ãã³ã䜿ãããå ŽåïŒTableãªã©ã䜿ãå ŽåïŒã«ã¯ã次ã®ããã«ããšã¹ã±ãŒãããå¿ èŠããããŸãã
ã
-- æ³¢ã«ãã³ã衚瀺ããã ãã®LUAããã°ã©ã
print "{æ³¢ã«ãã³}...{æ³¢ã«ãã³éã}" --> {...}
print "{\{}...{\}}" --> {...}
ããLUAãã
ãããå®è¡ãããšã{âŠ}ãã2çµã衚瀺ãããŸããã芧ã®éããšã¹ã±ãŒãã¯é¢åã§ããããã§ãæ³¢ã«ãã³ã§è©äŸ¡ãè¡ããªããå±éãªãã®æååãã䜿ãããšãã§ããŸãã
ãªã§ããã®ããã°ã©ã ã§ã¯ãæååã®çš®é¡ã«ä»¥äžã®çš®é¡ããããç®çã«å¿ããŠäœ¿ãåããããšãã§ããŸãã
çš®é¡ | åè |
---|---|
ãâŠã | ãã䜿ããªã§ããã®æååãæ³¢ã«ãã³ {..}ã®äžãè©äŸ¡ããã |
"âŠ" | å±éã®ããæååãæ³¢ã«ãã³{..}ã®äžãè©äŸ¡ããã |
ãâŠã | å±éã®ãªãæååã |
`âŠ` | å±éã®ãªãæååã |
ãããããLua ã®ããã°ã©ã ãæžãå Žåã«ã¯ããâŠã ãããã¯ã`âŠ` ã®æååãåããŠããããšãåãããŸãã
ãŸããçŽç²ã«å€éšã«èšè¿°ãã Lua ã®ããã°ã©ã ãå®è¡ãããå Žåã«ã¯ããªã§ããã®ãéããåœä»€ãšçµã¿åãããŠæ¬¡ã®ããã«èšè¿°ã§ããŸãã
LUAãã¡ã€ã«=ãtest001.luaã
LUAãã¡ã€ã«ãéããŠãLUAããã
ãªã§ãããŠãŒã¶ãŒã®æ¹ã§ãLua ã«ã€ããŠåŠã³ãããšæã£ãŠããæ¹ã«ã¯ã次ã®Webãµã€ããåèã«ãªããŸãã
æ¥æ¬ã§Luaã«é¢ããæžç±ãçºå£²ãããŠããŸãã®ã§ããããåèã«ãªãã§ãããã
ããŠããªã§ãããããLua ã®ããã°ã©ã ãå®è¡ããã ãã§ã¯ãããã»ã©ããäºãã«ãšã£ãŠã¡ãªããã¯ãªããããããŸãããããã§ããªã§ãããš Lua ã®é£æºã«äœ¿ããåœä»€ã玹ä»ããŸãã
åœä»€ã®åå | æ©èœ |
---|---|
LUAãã | åŒæ°ãšããŠæå®ãããLuaã®ããã°ã©ã ãå®è¡ãã |
LUAå€ | LuaåŽã®å€æ°ã®å€ãååŸãã |
äŸãã°ãLua ã§è¡ã£ãèšç®çµæãããªã§ããã§ååŸããŠç»é¢ã«è¡šç€ºããã«ã¯æ¬¡ã®ããã«ããŸãã
LUA(`--
r = 1
n = 5
for i = 1, 10 do
r = r * n
end
--`)
LUAå€("r")ãèšãã
ãŸããLUAãããåœä»€ã¯ãæ¯åãLuaã®ãšã³ãžã³ãåæåããããã§ã¯ãªãã®ã§ãLua ã®ããã°ã©ã ããå¥ã ã®å Žæã«åããŠæžãããšãã§ããŸãã
LUA(`function add(a,b) return a + b end`)
LUA(`ret = add(3,5)`)
LUAå€("ret")ãèšãã
ãããŠãLua åŽãããªã§ãããæ±ãããã®åœä»€ã«ã¯æ¬¡ã®ãã®ããããŸãããªã§ããã®å€æ°ãèšå®ã»ååŸãããããªã§ããã®ããã°ã©ã ãå®è¡ãããã§ããŸãã
颿° | æ©èœ |
---|---|
nako_get("倿°å") | ãªã§ããã®å€æ°ã®å€ãåŸã |
nako_set("倿°å","å€") | ãªã§ããã®å€æ°ã«å€ãèšå®ãã |
nako_eval("ããã°ã©ã ") | ãªã§ããã®ããã°ã©ã ãå®è¡ãã |
以äžã®ããã°ã©ã ã¯ãLua ãããªã§ããã®åœä»€ãå©çšããäŸã§ãããã¡ã¢åž³ãèµ·åããŠæåãæžã蟌ããšããããã°ã©ã ã«ãªã£ãŠããŸãã
LUA(`--
-- ã¡ã¢åž³ãèµ·åãã
nako_eval("ãnotepad.exeããèµ·åã")
-- 1ãã30ãŸã§ã®æ°å€ãæžã蟌ã
for i=1,30 do
nako_eval("ãã¡ã¢åž³ãã«ã("..i..")ããããŒæåéä¿¡")
nako_eval("0.1ç§åŸ ã€ã")
end
--`)
ã§ã¯ãæåŸã«ãLua ã§ãªã§ããã®ã©ã€ãã©ãªãäœãæ¹æ³ã玹ä»ããŸãããšã¯ãèšã£ãŠãåºæ¬çã«ã¯ããªã§ããã§é¢æ°ãå®çŸ©ãããã®äžã§ãLUAãããåœä»€ãå®è¡ããã ãã§ãã
以äžã¯ãè¶³ãç®ãè¡ã颿°ãå®çŸ©ãããã®ã§ãã
#-----------------------------------------------------------------------
# 颿°ã®å®çŸ©
âãã¹ãå ç®(AãšBã)
ãããresult = {A} + {B}ããLUAãã
ããããã¯ãLUAå€("result")
#-----------------------------------------------------------------------
# 颿°ã䜿ã£ãŠã¿ã
3ãš5ããã¹ãå ç®ããŠã衚瀺ã
ãŸããéåºŠãæ±ããããå Žåã«ã¯ãããããã Lua ã®é¢æ°ãå®çŸ©ããŠãããŠããªã§ããã®é¢æ°åŒã³åºãã§ã¯ãLua ã®é¢æ°ãåŒã³åºãã ãã«ããŠãããŸãã
#-----------------------------------------------------------------------
# Lua ã®é¢æ°å®çŸ©
LUA(`--
function add(a, b)
return a + b
end
--`)
#-----------------------------------------------------------------------
# ãªã§ããã®é¢æ°å®çŸ©
âãã¹ãå ç®(AãšBã)
ãããresult = add({A},{B})ããLUAãã
ããããã¯ãLUAå€("result")
#-----------------------------------------------------------------------
# 颿°ã䜿ã£ãŠã¿ã
3ãš5ããã¹ãå ç®ããŠã衚瀺ã
å®ã¯ãããã¶ãåããããªã§ããã§ã Windows ã® COMã³ã³ããŒãã³ã(ActiveX)ã䜿ããããã«ããããšããèšç»ãããã®ã§ãããããŸã å®çŸããŠããŸãããããã§ãWindows çã® Lua ãLua for Windowsãã«ä»å±ããŠãããLuaCOM ãšããã©ã€ãã©ãªã䜿ãããšã§ãCOMãæ±ãããšãã§ããããã«ãªããŸãã
â»ãªã§ããã®ã€ã³ã¹ããŒã«ãã©ã«ãã«ã<clibs>ãšãããã©ã«ããããã°ãããã¯ãLua ã®ã©ã€ãã©ãªãå ¥ããŠããããã®ãã©ã«ãã§ãããã<clibs>ãã©ã«ãããªããã°ããããã LuaCOM ãããŠã³ããŒãããŠãªã§ããã®ãã©ã«ãã«ã³ããŒããŠãã ããã
以äžã®ããã°ã©ã ã¯ãLuaCOMãå©çšããŠãExcelãèµ·åããããã«é©åœãªå€ã100åæžã蟌ããšãããµã³ãã«ãšãªã£ãŠããŸãã
LUA(`--
-- Excel ãèµ·åãã
require('luacom')
local excel = luacom.CreateObject("Excel.Application")
excel.Visible = true
local wb = excel.Workbooks:Add()
local ws = wb.Worksheets(1)
for row=1,100 do
ws.Cells(row,1).Value2 = math.random()
ws.Cells(row,2).Value2 = math.random()
ws.Cells(row,3).Value2 = math.random()
end
--`)
ãã¡ããããªã§ããã®ããšã¯ã»ã«ã»ã«èšå®ãã䜿ãã°ãäžã®ããã°ã©ã ãšåãããšãã§ããã®ã§ããããªã§ããã§å©çšã§ããªã Excel ã®æ©èœã Lua ã䜿ãããšã§å®è£ ã§ããããã«ãªããŸãã
äŸãã°ãInternet Explorer ãèµ·åããŠããªã§ããã®ããŒãžã衚瀺ãããããã°ã©ã ãäœãããšãã§ããŸãã
LUA(`-- IEãæäœãã
require('luacom')
ie = luacom.CreateObject("InternetExplorer.Application")
ie.Visible = true
ie:Navigate2("http://nadesi.com")
--`)
Lua ãš ãªã§ãããçµã¿åãããããšã§ãããããã®æ¬ ç¹ãåãåã£ãŠãçç£æ§ãé«ããããšãã§ããŸãããªã§ãããŠãŒã¶ãŒã®äžã«ã¯ãè±èªãèŠæã§ Lua ã®å°å ¥ã¯ããŸãå¬ãããªããšæã人ããããããããŸããããããããªã§ããã®ã©ã€ãã©ãªãæžãåŽã«ãšã£ãŠã¯ãCèšèªãDelphiã䜿ã£ãŠãDLLãäœã ãªããŠãè¯ãã®ã§ãæ°è»œã«ã©ã€ãã©ãªã®äœæãã§ããããã«ãªã£ããšæããŸãã
ãªã§ããã® 1.522 ã®ããŒãžã§ã³ã§ã¯ãLua åŽã«ããŸã ãluacom ããã©ã€ãã©ãªãçšæãããŠããŸããããä»åŸãLua åŽã«äŸ¿å©ãªã©ã€ãã©ãªã远å ããŠããã€ããã§ããä»åŸã®å±éãæ¥œãã¿ã«ããŠããŠãã ããïŒ