gpt4 book ai didi

带参数的 Ruby DSL define_method

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

这就是我想要做的。

# DSL Commands
command :foo, :name, :age
command :bar, :name

# Defines methods
def foo(name, age)
# Do something
end

def bar(name)
# Do something
end

基本上,我需要一种通过 define_method 处理参数的方法,但我想要定义数量的参数而不是 arg 数组(即 *args)

这是我目前的情况

def command(method, *args)
define_method(method) do |*args|
# Do something
end
end

# Which would produce
def foo(*args)
# Do something
end

def bar(*args)
# Do something
end

想法?

最佳答案

我认为最好的解决方法是执行以下操作:

def command(method, *names)
count = names.length
define_method(method) do |*args|

raise ArgumentError.new(
"wrong number of arguments (#{args.length} for #{count})"
) unless args.length == count

# Do something
end
end

关于带参数的 Ruby DSL define_method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938918/

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