编程语言函数返回值处理方式排名

摘要

一个函数一个返回值,这好像跟祖宗定下的规则似的,各个时代主流编程语言几乎都严格遵守着。然而,在实际情况下,程序员写代码经常会碰到一个函数会返回多个返回值这种需求,比如说一个带分页功能的函数,需要要返回数据列表和总记录数两个值;一个http请求函数

  一个函数一个返回值 , 这好像跟祖宗定下的规则似的,各个时代主流编程语言几乎都严格遵守着。然而, 在实际情况下, 程序员写代码经常会碰到一个函数会返回多个返回值这种需求, 比如说一个带分页功能的函数 ,需要要返回数据列表和总记录数两个值; 一个http请求函数需要返回状态码和响应内容两个值。这样的情况比比皆是。 面对这种需求,每一种语言都有自己的一套应对方法。 下面我们来对各主流语言实现方法的好坏来进行一下排名。

  第一名:golang

  golang的函数天生就支持多返回值这个特性, 一个函数可以返回任意数量的返回值。

  编程语言函数返回值处理方式排名

  所以, 在这一点上, 其它语言和golang没得比。

  第二名:Python

  python虽然不像golang一样函数支持同时可返回多个值 , 然而, python中有一项语法元素「元组」, 元组中可包含任意数量任意类型的值。

  编程语言函数返回值处理方式排名

  当然, 一些语法元素中有元组的语言, 都支持这样的写法, 如F#,haskell等

  第三名:c#

  c#不支持多返回值函数, 也没有元组语法,但是它有自带的元组类库可以使用, 虽然比较臃肿丑陋,但是代码的设计思路却是正确的。

  编程语言函数返回值处理方式排名

  c#的元组相对于python来说实现显的不够优雅。虽然在c#中还有ref和out类型的参数可以变相实现一个函数返回多个值 , 然而,这真的不是一种美丽的做法, 非常的不推荐。

  第四名:php

  php的数组可以将多个值装在一起返回, 但这是最老土最原始的做法, 没有什么值的称道的,本来应该和其它语言并列倒数第一的, 但是,php中的list关键字可用于数组的解构 , 这算是一点优势, 因此, 将php向前提升一名, 位列第四。

  编程语言函数返回值处理方式排名

  php的写法看起来比c#要方便和优雅, 但是,任何数组都是同一个类型, 不管里面有几个元素, 因此, php灵活的写法是建立在安全性差的前提之上的,所以,不如c#。 切记, 数组并非元组,每个元组都是独一无二的类型, 而任何数组都是同一种类型。

  Java、JavaScript、c、c++并列倒数第一

  代码我都懒的贴

  结论

  除了像golang这种有先天优势的语言, 对于多返回值函数的推荐解决方案就是使用「元组」, 如果语言本身不支持元组, 那么可以通过语言的其它特性模拟一个元组的实现。

匿名

发表评论

匿名网友