プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

Luaでメソッドチェーン

jQueryのようなメソッドチェーンを作る。
ていうか作るのは簡単だけど使い所を見つけるのが難しいような気がする。
パスを書いたりアクションを記述するには良いかもしれない。

アクションクラス

Action = {}

function Action:new(o)
	self.__index = self
	return setmetatable(o or {}, self)
end

function Action:left()
	print(self.name .. "は左へ行った")
	coroutine.yield()
	return self
end

function Action:right()
	print(self.name .. "は右へ行った")
	coroutine.yield()
	return self
end

function Action:up()
	print(self.name .. "は上へ行った")
	coroutine.yield()
	return self
end

function Action:down()
	print(self.name .. "は下へ行った")
	coroutine.yield()
	return self
end

function Action:die()
	print(self.name .. "は死んだ")
	coroutine.yield()
	return self
end

メイン

taro = Action:new{name = "太郎"}
move = coroutine.wrap(function ()
	taro:left():right():up():down():die()
	return true
end)

repeat
	--太郎の行動の合間に何か処理をする
until move()

出力結果

太郎は左へ行った
太郎は右へ行った
太郎は上へ行った
太郎は下へ行った
太郎は死んだ


単純だけど面白い。