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

2020年2月13日21:07:09
评论

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

—————————————————————

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

回复内容:

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

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

struct Para...;//define a parameter struct
struct Ret...;//define a return struct
Ret func(Para p){
    ...
}

Para para = XXX;
Ret ret;
ret = func(para);

在runtime允许多值return并不是很有用,虽然看上去好像非常有用,如果这是一个必要的语言机制,那现在大多数语言就应该已经都支持了。如果你用过有这个功能的语言,比如Go,也多用来方便错误处理,它不一定要这么用,但实际的代码里通常就是这样

result, err := func()
result, _   := func()

fork被你吃了?(ー`´ー) C里调一个指针或者结构体指针,你想返回多少都行,只要内存够。 请看Lua,函数参数可多可少,返回值可多可少,接收返回值也是可多可少。 流行得比较早的语言,比如pascal和c,都只有一个返回比较简单类型的返回值,这可能是为了把返回值放到某寄存器中返回,这样调用者可以直接用,有利于提高程序的速度。过去cpu是很慢的,这种优化很有价值。

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

设计一个多个返回值的语言,并不困难。golang就是一个。 个人理解,多返回值的函数一定可以通过多个单返回值的函数来实现。对于早起的语言设计者而言,这应该是一个锦上添花而不是必须的功能,优先级不高。

当然,后来的语言,很多已经实现了这个功能,因为毕竟不难

ps,说通过指针在参数里传递的,可以退散了,不是一个问题好吧。 现代编程语言中「函数」概念多来自 ALGOL 和 Fortran

ALGOL 和 Fotrean 的概念借自数学

数学函数有多元之说,然而你见过几个「多返回值」的? 这是一个好问题。为什么函数只返回一个值。这是存储和计算的一种统一。一个没有副作用的函数,返回一个值,那他在使用上其实是可以看做一个变量,一个有条件的变量,可以很好的简化程序。

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

  • 相关标签:2016
  • 本文原创发布php教程 ,转载请注明出处,感谢您的尊重!
    • 上一篇:ruby和python该学那一个?
    • 下一篇:如何在Python中使用break跳出多层循环?

    相关文章

    相关视频

    • 在Django框架中运行Python应用全攻略
    • 在Python的Django框架中创建和使用模版
    • python获取元素在数组中索引号的方法
    • 浅谈python中截取字符函数strip,lstr...
    • 为什么大多数编程语言被设计成函数只有一个返回值,而...
    • 轮播图案例讲解
    • 轮播图案例的预备知识(3)
    • 轮播图案例的预备知识(2)
    • 轮播图案例的预备知识(1)

    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论

  • 立即提交

    专题推荐

    企鹅博客
    • 本文由 发表于 2020年2月13日21:07:09
    • 转载请务必保留本文链接:https://www.qieseo.com/333205.html

    发表评论