gpt4 book ai didi

ruby DSL : Can you pass a block to an object

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:48 25 4
gpt4 key购买 nike

我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com