#!/usr/local/bin/lua52 fizzbuzz = (function() local fizzbuzz = { -- table は JavaScript の object 相当 fizz = { [0] = "Fizz" }, -- [0]がないとfizz[1] = "Fizz" buzz = { [0] = "Buzz" }, -- luaの配列は1から始まるので } return function(n) -- クロージャーも使える local fizz = n % 3 local buzz = n % 5 if fizzbuzz.fizz[fizz] then if fizzbuzz.buzz[buzz] then -- .. で文字列連結 return fizzbuzz.fizz[fizz] .. fizzbuzz.buzz[buzz] else return fizzbuzz.fizz[fizz] end else if fizzbuzz["buzz"][buzz] then return fizzbuzz["buzz"][buzz] else return n end end end end)() for i=1,30 do -- evalはloadstringで string を function にしてから local f = loadstring("print(fizzbuzz(" .. i .. "))") f() -- 実行する。JSの new Funcion()とほぼ同じ end