为什么一些流行语言中的函数只返回一种类型的结果?
也就是说,我的意思是为什么编译器在遵循以下语法时会出现错误
public int int  returnTwoIntegers(){
.......
........
}发布于 2010-07-19 00:07:41
Daniel Weinreb --他研究过Lisp方言(有多个返回值)和Java (没有),explains why
当我们将多值返回特性添加到Lisp机器Lisp (从那里进入Common Lisp)时,我相信避免协商的愿望是一个重要的动机。当时,我们还没有很好的GC技术,并且编写Lisp程序来小心地最小化consing是非常普遍的。
另一个原因是表现力:为了清楚地表明函数实际上返回了多个结果,而不是引入一个小小的列表“类型”(例如,“文件句柄的两个列表和一个布尔值来表示是否...”)。
在Java中,我见过一些小类的定义,它们的唯一目的是提供一种返回多个值的方法。这种方法的优点是记录了返回值的类型和含义(至少如果您选择清晰的名称并添加注释!)。但在我看来,这是相当冗长的。
当我第一次回顾早期的Java规范时,我惊讶地发现没有办法返回多个值。我想游说加入这一点,所以我试着想出一个既简单又非常引人注目的用例。我不能这样做!所以我没有试着去游说。很明显,Java的设计者试图避免许多花哨的东西(和语法糖),这方面肯定有很多可说的。
发布于 2010-07-16 15:43:06
函数只返回一个值,因为这是“他们”在以前的汇编程序中发明的方法。基本上发生的是函数将返回值推送到堆栈上。然后调用者从堆栈中弹出值。如果函数返回更多的值,调用者将不知道要弹出多少值,堆栈将不平衡(导致程序崩溃)。
发布于 2010-07-16 15:09:19
一个函数(使用您在标记中提到的语言)确实有一个输出,但该输出不一定是单个value。您的输出可以很容易地成为一个类,它封装了您想要的任意数量的数据。
此外,请注意,您还可以通过引用将多个输入参数传递给函数,从而增加返回的输出数量。
https://stackoverflow.com/questions/3262627
复制相似问题