作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我对 Ruby 还很陌生,只是在探索 DSL。我想知道这在 Ruby 中是否可行,如果可行,该怎么做?
melissa = Player.new
melissa do
on :turn do
puts "It's my turn!"
end
on :win do
puts "I win! Hahahaha"
end
end
如果之前有人问过这个问题,请原谅。我不确定要搜索什么来解决这个问题。搜索 DSL 会产生其他结果。
最佳答案
当然可以。这是一个示例,尝试修改它:
class Player
def initialize(&block)
@actions = {}
instance_eval &block
end
def on(action, &block)
@actions[action] = block
end
def act(action)
@actions[action].call if @actions[action]
end
end
melissa = Player.new do
on :turn do
puts "It's my turn!"
end
on :win do
puts "I win! Hahahaha"
end
end
melissa.act :turn #=> It's my turn!
关于 ruby DSL : Can you pass a block to an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226913/
我是一名优秀的程序员,十分优秀!