先声明,我知道有办法让函数的返回值有多个,比如返回数组或者对象。我也没说返回数组或者对象一定不好,在有些情况下,这么做是很合适的。
我这里说的一个是正常情况下,函数的声明里,只允许我们定义一个返回值,而且还没有名字(因为只有一个,所以不需要名字)。为什么输入参数就能有多个,还有名字,明显的不公平!
我们很多时候不想因为返回值超过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个而定义类,那会显得笨重。所以,我们选择返回数组,或者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反映反映。