首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么一些流行语言中的函数只返回一种类型的结果?

为什么一些流行语言中的函数只返回一种类型的结果?
EN

Stack Overflow用户
提问于 2010-07-16 15:05:55
回答 13查看 2K关注 0票数 6

为什么一些流行语言中的函数只返回一种类型的结果?

也就是说,我的意思是为什么编译器在遵循以下语法时会出现错误

代码语言:javascript
运行
复制
public int int  returnTwoIntegers(){
.......
........
}
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2010-07-19 00:07:41

Daniel Weinreb --他研究过Lisp方言(有多个返回值)和Java (没有),explains why

当我们将多值返回特性添加到Lisp机器Lisp (从那里进入Common Lisp)时,我相信避免协商的愿望是一个重要的动机。当时,我们还没有很好的GC技术,并且编写Lisp程序来小心地最小化consing是非常普遍的。

另一个原因是表现力:为了清楚地表明函数实际上返回了多个结果,而不是引入一个小小的列表“类型”(例如,“文件句柄的两个列表和一个布尔值来表示是否...”)。

在Java中,我见过一些小类的定义,它们的唯一目的是提供一种返回多个值的方法。这种方法的优点是记录了返回值的类型和含义(至少如果您选择清晰的名称并添加注释!)。但在我看来,这是相当冗长的。

当我第一次回顾早期的Java规范时,我惊讶地发现没有办法返回多个值。我想游说加入这一点,所以我试着想出一个既简单又非常引人注目的用例。我不能这样做!所以我没有试着去游说。很明显,Java的设计者试图避免许多花哨的东西(和语法糖),这方面肯定有很多可说的。

票数 2
EN

Stack Overflow用户

发布于 2010-07-16 15:43:06

函数只返回一个值,因为这是“他们”在以前的汇编程序中发明的方法。基本上发生的是函数将返回值推送到堆栈上。然后调用者从堆栈中弹出值。如果函数返回更多的值,调用者将不知道要弹出多少值,堆栈将不平衡(导致程序崩溃)。

票数 22
EN

Stack Overflow用户

发布于 2010-07-16 15:09:19

一个函数(使用您在标记中提到的语言)确实有一个输出,但该输出不一定是单个value。您的输出可以很容易地成为一个类,它封装了您想要的任意数量的数据。

此外,请注意,您还可以通过引用将多个输入参数传递给函数,从而增加返回的输出数量。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3262627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档