函数的返回值为什么只能有一个?

先声明,我知道有办法让函数的返回值有多个,比如返回数组或者对象。我也没说返回数组或者对象一定不好,在有些情况下,这么做是很合适的。

我这里说的一个是正常情况下,函数的声明里,只允许我们定义一个返回值,而且还没有名字(因为只有一个,所以不需要名字)。为什么输入参数就能有多个,还有名字,明显的不公平!

我们很多时候不想因为返回值超过1个而定义类,那会显得笨重。所以,我们选择返回数组,或者hashtable之类,但我觉得这个办法还是有点麻烦。

实际工作中,我们常常有需要有多个返回值的情况,就跟我们需要多个输入参数一样。
比如,一个解析url的函数,返回值是protocal://host:port/path,一共有四部分。也用数组返回就不够方便了。

所以,我希望返回值的这个问题能得到语言开发者的重视,让多返回值在语言级别得到支持。
比如用下列的格式声明函数:
function (String protocal, String host, int port, String path) parseUrl(String url)
调用的时候:(String protocal, String host, int port, String path) = parseUrl("http://somedomain.com:8080/abc.html");

我认为这样的方式比返回数组方式要简洁明了:
Object[] rslt = parseUrl("....");
String protocal = rslt[0].toString();
String host = rslt[1].toString();
int port = Integer.parse(rslt[2],10);

可惜,我好像目前为止没看到哪个新一点的语言里有考虑这个问题的。以后得向python,ruby这些的mailinglist反映反映。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值