读书人

函数为什么只有一个返回值?解决思路

发布时间: 2012-03-31 13:13:26 作者: rapoo

函数为什么只有一个返回值?
在marrco2005 (高手前传)的帖子《在C++中,为什么构造函数不能有返回值?》中,我们热烈地讨论了一番。我获益不少。
这倒让我想起了另一个问题:为什么函数不能返回多个值?
很多语言都是这样。难道冥冥之中有个看不见的大手操纵着这一切吗?
我知道,数学中的函数是返回一个值的。否则就是映射了,那这些语言干嘛不再搞一个“映射”呢?这样我们可以通过一次调用获得许多值。

[解决办法]
boost::tuple 就可以使得函数返回多个值
[解决办法]
matlab可以返回多值
Ruby可以返回多值。

[解决办法]
想一想C++里有名的NRV优化等等,大结构返回值也是用回传参数的形式实现的。
所以,多返回值没意义啊,和回传参数就是一个写法上的差异。
[解决办法]
同意楼上的,C++/C那些人就喜欢这么定义,而且这并没有什么不好,所以直到现在,规则仍然是这样。如果你觉得不好,有2种方法:
1。让C++ 标准委员会听你的,修改C++规范,成功地可能性基本为0
2。自己实现一种语言,如D语言,这样你就说了算,你想怎么样就怎么样。

perl语言可以返回多个值,但是也有好多奇怪的语法,甚至不合常规。小骆驼书作者说,larry(perl 语言的发明者)就是这么设计的,如果你不满意,你可以设计一种新语言。而larry决不会向你屈服,依照你的建议更改语法规则。

C++/C不够优雅,有很多易混淆的,容易出错的,也很难学,但已既成事实,根本性的东西不可能改变。就像键盘一样,按键的位置并不合理,但是谁能改变它呢?

读书人网 >C++

热点推荐