開発環境
- 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 (Hard)(No. 1199).を取り組んでみる。
Do (Hard)(No. 1199)
コード(Emacs)
function retry(count, body)
while count > 0 do
print('count: ' .. count)
local generator = coroutine.create(body)
succeeded, value = coroutine.resume(generator)
if value then
print(value)
count = count - 1
else
count = 0
end
end
end
function f()
local r = math.random()
print('random: ' .. r)
if r > 0.2 then
coroutine.yield('Something bad happend')
end
print('Succeeded')
end
for i = 1, 10 do
print('--------------------------------------------------')
retry(5, f)
end
入出力結果(Terminal)
$ lua sample_hard.lua -------------------------------------------------- count: 5 random: 0.84018771676347 Something bad happend count: 4 random: 0.39438292663544 Something bad happend count: 3 random: 0.78309922339395 Something bad happend count: 2 random: 0.79844003310427 Something bad happend count: 1 random: 0.91164735751227 Something bad happend -------------------------------------------------- count: 5 random: 0.19755136920139 Succeeded -------------------------------------------------- count: 5 random: 0.33522275555879 Something bad happend count: 4 random: 0.76822959445417 Something bad happend count: 3 random: 0.27777471067384 Something bad happend count: 2 random: 0.55396995553747 Something bad happend count: 1 random: 0.47739705163985 Something bad happend -------------------------------------------------- count: 5 random: 0.62887092446908 Something bad happend count: 4 random: 0.36478447262198 Something bad happend count: 3 random: 0.51340090995654 Something bad happend count: 2 random: 0.9522297247313 Something bad happend count: 1 random: 0.91619506757706 Something bad happend -------------------------------------------------- count: 5 random: 0.63571172766387 Something bad happend count: 4 random: 0.71729692909867 Something bad happend count: 3 random: 0.14160255528986 Succeeded -------------------------------------------------- count: 5 random: 0.60696887597442 Something bad happend count: 4 random: 0.016300571616739 Succeeded -------------------------------------------------- count: 5 random: 0.24288677051663 Something bad happend count: 4 random: 0.13723157672212 Succeeded -------------------------------------------------- count: 5 random: 0.80417675385252 Something bad happend count: 4 random: 0.15667908918113 Succeeded -------------------------------------------------- count: 5 random: 0.40094439405948 Something bad happend count: 4 random: 0.12979044672102 Succeeded -------------------------------------------------- count: 5 random: 0.1088088019751 Succeeded $
0 コメント:
コメントを投稿