gpt4 book ai didi

ruby - 每当调用实例时自动调用方法

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

我有几个类,例如 P,它们共享相同的实例方法 some_method:

class P
...
def some_method
@id
end
end

这些类的实例将在许多地方用作参数,如下所示:

p = P.new
q = Q.new
...

def some_outside_method(p,q,r,s)
another_outside_method(p.some_method, q.some_method, r.some_method, s.some_method)
end

我想知道是否有更优雅的写法。是否可以在 some_outside_method(p) 中引用 p 时自动调用 psome_method?它类似于 to_sputs 隐式调用,但更通用。

最佳答案

您可以通过这样做来减少重复,例如:

def some_outside_method(p,q,r,s)
args = [p, q, r, s].map{|o| o.send(:some_method)}
another_outside_method(*args)
end

或者,更简单地说:

def some_outside_method(*args)
args = args.map(&:some_method)
another_outside_method(*args)
end

或者,更简单地说:

def some_outside_method(*args)
another_outside_method args.map(&:some_method)
end

但是不要。简单的代码胜过简洁和“聪明”的代码。

关于ruby - 每当调用实例时自动调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377441/

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