gpt4 book ai didi

python - 从函数返回多个值的优雅方法

转载 作者:IT老高 更新时间:2023-10-28 22:13:59 25 4
gpt4 key购买 nike

在大多数主流编程语言中,从一个函数返回多个值似乎是一件非常尴尬的事情。

典型的解决方案是创建一个 struct 或一个普通的旧数据 class 并返回它,或者通过引用或指针传递至少一些参数归还他们。

使用引用/指针非常尴尬,因为它依赖于副作用并且意味着您还有另一个参数要传递。

类/结构解决方案在恕我直言也很尴尬,因为您最终会得到一百万个仅用于从函数返回值的小类/结构,从而产生不必要的困惑和冗长。

此外,很多时候总是需要一个返回值,其余的仅在某些情况下由调用者使用。这些解决方案都不允许调用者忽略不需要的返回类型。

我所知道的可以优雅地处理多个返回值的一种语言是 Python。对于那些不熟悉的人,它使用元组解包:

a, b = foo(c)  # a and b are regular variables.
myTuple = foo(c) # myTuple is a tuple of (a, b)

对于这个问题,还有其他好的解决方案吗?欢迎使用除 Python 之外的现有主流语言中工作的习语和您在非主流语言中看到的语言级解决方案。

最佳答案

几乎所有受 ML 影响的函数式语言(其中大部分)也有很好的元组支持,这使得这类事情变得微不足道。

对于 C++,我喜欢 boost::tuple 加上 boost::tie(或者 std::tr1,如果你有的话)

typedef boost::tuple<double,double,double> XYZ;

XYZ foo();

double x,y,z;
boost::tie(x,y,z) = foo();

或者一个不那么做作的例子

MyMultimap::iterator lower,upper;
boost::tie(lower,upper) = some_map.equal_range(key);

关于python - 从函数返回多个值的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514038/

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