Home >Backend Development >Python Tutorial >为什么大多数编程语言被设计成函数只有一个返回值,而不是多个?

为什么大多数编程语言被设计成函数只有一个返回值,而不是多个?

WBOY
WBOYOriginal
2016-06-06 16:23:582049browse

程序语言的发展很大的部分受人类正常思维方式的影响,在生活中,给一个输入,有两个输出很常见,而大多数编程语言为什么不这么设计?

—————————————————————
不同编程语言因设计的不同支持1个或多个返回值,故于2016—02—06更改问题。

回复内容:

python允许你干多个返回值的事情。然并卵,其实会包裹成一个tuple,加之tuple本来就可以原素绑定… 其实这个问题也不是一句「返回一个数据结构」就可以清楚解决的。既然返回值可以是一个数据结构,那么参数其实也可以。为什么从C、Pascal这些古老的语言开始,参数就可以是多个,而返回值却是一个呢?这个问题值得探讨一下。

假设我们设计了一个语言叫C-,函数的参数和返回值都只能是一个,那么在C-里,一个多参数多返回值的函数的定义和使用过程就是这样的:

<code class="language-text">struct Para...;//define a parameter struct
struct Ret...;//define a return struct
Ret func(Para p){
    ...
}

Para para = XXX;
Ret ret;
ret = func(para);
</code>
在runtime允许多值return并不是很有用,虽然看上去好像非常有用,如果这是一个必要的语言机制,那现在大多数语言就应该已经都支持了。如果你用过有这个功能的语言,比如Go,也多用来方便错误处理,它不一定要这么用,但实际的代码里通常就是这样
<code class="language-text">result, err := func()
result, _   := func()
</code>
fork被你吃了?(ー`´ー) C里调一个指针或者结构体指针,你想返回多少都行,只要内存够。 请看Lua,函数参数可多可少,返回值可多可少,接收返回值也是可多可少。 流行得比较早的语言,比如pascal和c,都只有一个返回比较简单类型的返回值,这可能是为了把返回值放到某寄存器中返回,这样调用者可以直接用,有利于提高程序的速度。过去cpu是很慢的,这种优化很有价值。

c++大概是继承了c,所以只有一个i返回值。java从语法上模仿c++,所以也只有一个返回值。

设计一个多个返回值的语言,并不困难。golang就是一个。 个人理解,多返回值的函数一定可以通过多个单返回值的函数来实现。对于早起的语言设计者而言,这应该是一个锦上添花而不是必须的功能,优先级不高。
当然,后来的语言,很多已经实现了这个功能,因为毕竟不难
ps,说通过指针在参数里传递的,可以退散了,不是一个问题好吧。 现代编程语言中「函数」概念多来自 ALGOL 和 Fortran
ALGOL 和 Fotrean 的概念借自数学
数学函数有多元之说,然而你见过几个「多返回值」的? 这是一个好问题。为什么函数只返回一个值。这是存储和计算的一种统一。一个没有副作用的函数,返回一个值,那他在使用上其实是可以看做一个变量,一个有条件的变量,可以很好的简化程序。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn