gpt4 book ai didi

language-agnostic - 如何从一个方法返回两个值?

转载 作者:行者123 更新时间:2023-12-03 15:06:05 26 4
gpt4 key购买 nike

当您需要在一个方法中返回两个东西时,最好的方法是什么?

我理解一个方法应该只做一件事的理念,但是说你有一个运行数据库选择的方法,你需要拉两列。我假设您只想遍历数据库结果集一次,但您想返回两列数据。

我提出的选项:

  • 使用全局变量来保存返回。 我个人尽量避免使用全局变量。
  • 传入两个空变量作为参数,然后在方法内分配变量,现在是一个 void。 我不喜欢有副作用的方法的想法。
  • 返回一个包含两个变量的集合。 这可能会导致代码困惑。
  • 构建一个容器类来保存双重返回。 这比包含其他集合的集合更具自我记录性,但似乎仅仅为了返回目的而创建一个类可能会令人困惑。
  • 最佳答案

    这并不完全与语言无关:在 Lisp 中,您实际上可以从函数返回任意数量的值,包括(但不限于)无、一、二、...

    (defun returns-two-values ()
    (values 1 2))

    Scheme 和 Dylan 也是如此。在 Python 中,我实际上会使用一个包含 2 个值的元组,例如
    def returns_two_values():
    return (1, 2)

    正如其他人所指出的,您可以使用 out 返回多个值。 C#中的参数。在 C++ 中,您将使用引用。
    void 
    returns_two_values(int& v1, int& v2)
    {
    v1 = 1; v2 = 2;
    }

    在 C 语言中,您的方法将采用指向位置的指针,您的函数应将结果值存储在该位置。
    void 
    returns_two_values(int* v1, int* v2)
    {
    *v1 = 1; *v2 = 2;
    }

    对于 Java,我通常使用专用类或非常通用的小助手(目前,在我的私有(private)“公共(public)”库中有两个: Pair<F,S>Triple<F,S,T>,它们都只是用于 2 的简单不可变容器。 3 个值)

    关于language-agnostic - 如何从一个方法返回两个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1468375/

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