gpt4 book ai didi

ruby - 如何从Ruby方法中删除多重 yield ?

转载 作者:行者123 更新时间:2023-12-03 09:12:41 25 4
gpt4 key购买 nike

我有一个A类来处理错误,
我如何重构它以从调用方法中删除多个返回。

基本上,当if true然后从errorsuccess为false的方法返回时。

Class A

def call
return method1 if true/false
return method2 if true/false
return method3 if true/false
{ success: true }
end

private

def method1
{
success: false
errors: 'X Not Found.'
}
end

def method2
{
success: false
errors: 'Y Not Found.'
}
end


def method3
{
success: false
errors: 'Z Not Found.'
}
end
end

最佳答案

由于true始终为true,因此第一个条件将始终为true,因此将始终执行第一个return。因此,第一个return之后的所有内容都只是死代码,永远不会到达。您可以将call方法简化为此方法,它等于您的代码100%:

def call
method1
end

或者

alias_method :call, :method1

由于不再从任何地方调用 method2method3,因此只需删除它们即可。

由于 method1仅从一个地方调用,即 call,因此您可以内联它,因此整个类都变成这样:

class A
def call
{
success: false
errors: 'X Not Found.'
}
end
end

这相当于您的代码100%,并且在所有情况下都做完全相同的事情。 (模通过无限制的反射违反封装。)

关于ruby - 如何从Ruby方法中删除多重 yield ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62382791/

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