在函数返回值中,我们总是被迫只能返回一个参数,即使我需要返回多个参数,比如一个列表和一个字符串。但是这种限制在函数参数中并不存在。
在函数返回值中,我们总是被迫只能返回一个参数,即使我需要返回多个参数,比如一个列表和一个字符串。但是这种限制在函数参数中并不存在。
这个问题是函数式编程语言(如F#,haskell等)试图解决的。问题在于,在硬件中,函数的返回值最初是通过CPU寄存器返回的,因此您只能返回单个值。C语法传承了这一遗产,C++(以及C#,Java)也继承了这一点。
这也允许您以与参数相同的方式记录函数返回的内容。
实际上,有些语言可以完全满足你的需求。比如Python,看看这段代码。它返回2个值:一个字符串和一个整数。
>>> def myFunc():
... string_val = "techmaddy"
... int_val = 10
... return string_val, int_val
...
>>>
>>> s, i = myFunc()
>>>
>>> print s
techmaddy
>>>
>>> print i
10
我希望这会有所帮助。
PS:在幕后,我猜Python将其装箱成一个列表并解除装箱。我不太了解Python,无法告诉您它具体做了什么。
return new Object[] { list, string};
幸运的是,JavaScript 是一种动态语言。这意味着您可以构建任何类型的对象并返回它。虽然这种方式不太安全,但它有效地满足了您需要具有“参数化”返回值的要求。
例如:
function stuff() {
return {
"foo": "a",
"bar": "b"
}
}
var theStuff = stuff();
alert(theStuff.foo + theStuff.bar); // should output "ab"
public interface Results<R> {
public void processing(String stage);
public void success(String mesg, R result);
public void successes(String mesg, List<R> result);
public void thrown(Throwable t);
}
public void process(Results<R> results, String text, List<String> data);