gpt4 book ai didi

Ruby "method_missing"创建方法后运行

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:11 25 4
gpt4 key购买 nike

我正在尝试实现一个代码,在 method_missing 的帮助下,如果它符合某个关键字,它会自动创建一个方法。

到目前为止这有效:

class Add
def initialize()
@result = ""
end


def output()
puts @result
end

def method_missing(name, *args)
if name.to_s.include? "add"
code = "def #{name}(*args)"\
"@result << args.to_s;"\
"end"
instance_eval(code)
end
end
end

a = Add.new

a.add_1("1") #created but not called
a.add_2("2") #created but not called
a.add_2("2") #called
a.output #I want it to return 122, but it returns only 2 once.

我希望方法在创建后立即运行。这不会发生,因为在执行其中的代码之前必须再次调用该方法。

我将如何实现它?

最佳答案

作为起点,也许是这样的。

class Add
def initialize
@result = ""
end

def output
@result
end

def method_missing(name,arg)
if name.to_s.include? 'add'
@result << arg
arg
else
super
end
end
end

a = Add.new

p a.add '1' # "1"
p a.add '2' # "2"
p a.add '2' # "2"
p a.output # "122"

p a.minus '1' #NoMethodError

关于Ruby "method_missing"创建方法后运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48481266/

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