gpt4 book ai didi

language-agnostic - 在条件语句中执行函数是否被认为是不好的形式?

转载 作者:行者123 更新时间:2023-12-04 07:44:22 25 4
gpt4 key购买 nike

考虑一种情况,您需要调用连续的例程并在一个返回可以评估为正的值时立即停止(true, object, 1, str(1))。

这样做非常诱人:

if (fruit = getOrange())
elseif (fruit = getApple())
elseif (fruit = getMango())
else fruit = new Banana();

return fruit;

我喜欢它,但在可以被视为专业生产代码的情况下,这不是一种非常常见的风格。人们可能会看到更复杂的代码,例如:
fruit = getOrange();
if(!fruit){
fruit = getApple();
if(!fruit){
fruit = getMango();
if(!fruit){
fruit = new Banana();
}
}
}

return fruit;

根据基本结构的教条,以前的形式可以接受吗?你会推荐它吗?

编辑:

我向那些认为这些函数是工厂或构造函数的人道歉。它们不是,它们只是占位符。问题更多是关于语法而不是“工厂化”。这些函数也可以是 lambda。

最佳答案

如果您想要简洁的语法,有几种语言允许为此目的使用“逻辑或”(C# 明确提供了一个合并运算符,因为空值不是假的)。

Python:

fruit = ( getOrange() or 
getApple() or
getMango() or
Banana() )

C#:
fruit = getOrange() ?? 
getApple() ??
getMango() ??
new Banana();

关于language-agnostic - 在条件语句中执行函数是否被认为是不好的形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2504839/

25 4 0
文章推荐: language-agnostic - 定期性能调优和维护
文章推荐: Django:在admin中 "clean"之后执行的方法
文章推荐: java - Stream 而不是 Stream 在列表上调用时产生