開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Lua (プログラミング言語)
Seven More Languages in Seven Weeks (Bruce Tate (著)、Ian Dees (著)、Frederic Daoud (著)、Jack Moffitt (著)、Pragmatic Bookshelf)のChapter 1(Lua)、Day 2(Tables All the Way Down)、Do (Easy)(No. 1191).を取り組んでみる。
Do (Easy)(No. 1191)
コード(Emacs)
function concatenate(a1, a2)
local result = a2
for k, v in pairs(a1) do
result[#result + 1] = v
end
return result
end
a1 = {'a', 'b', 'c', 'd', 'e'}
a2 = {'f', 'g', 'h', 'i', 'j'}
a = concatenate(a1, a2)
i = 1
while i <= 10 do
print(a[i])
i = i + 1
end
local _private = {}
function strict_read(table, key)
if _private[key] then
return _private[key]
else
error("Invalid key: " .. key)
end
end
function strict_write(table, key, value)
if _private[key] and not (value == nil) then
error("Duplicate key: " .. key)
else
_private[key] = value
end
end
local mt = {
__index = strict_read,
__newindex = strict_write
}
treasure = {}
setmetatable(treasure, mt)
入出力結果(Terminal)
$ lua -l sample_easy f g h i j a b c d e Lua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio > treasure.gold = 50 > treasure.gold 50 > treasure.silver ./sample_easy.lua:26: Invalid key: silver stack traceback: [C]: in function 'error' ./sample_easy.lua:26: in function 'strict_read' stdin:1: in main chunk [C]: in ? > treasure.gold = 100 ./sample_easy.lua:32: Duplicate key: gold stack traceback: [C]: in function 'error' ./sample_easy.lua:32: in function 'strict_write' stdin:1: in main chunk [C]: in ? > treasure.gold 50 > treasure.gold = nil > treasure.gold ./sample_easy.lua:26: Invalid key: gold stack traceback: [C]: in function 'error' ./sample_easy.lua:26: in function 'strict_read' stdin:1: in main chunk [C]: in ? > treasure.gold = 100 > treasure.gold v100 > $
0 コメント:
コメントを投稿