为什么没有(标准的,Java认证的)解决方案,作为Java语言本身的一部分,从Java方法返回多个值,而不是开发人员必须使用他们自己的方法,如地图,列表,对等.?为什么Java不支持n元组对象?
特别是考虑可以将两个对象一起修改(串联)的普通私有方法,并且在这种情况下作为返回的类型对象听起来有点过分.
我已经阅读了一些关于返回多个值的问题,例如在C++和Java中只有一个返回值的原因是什么?,从C++函数和https://softwareengineering.stackexchange.com/questions/203471/why-do-most-programming-languages-only-support-returning-a-single-value-from-af 返回多个值.
我同意用于证明多个返回值不是绝对必要的大多数参数,我理解为什么没有实现这样的功能,但我仍然无法理解为什么我们不能使用多个调用者保存的寄存器例如ECX和EDX返回这样的值.
使用寄存器而不是创建一个Class/Struct来存储这些值或通过引用/指针传递参数不是更快,两者都使用内存来存储它们吗?如果可以做这样的事情,那么任何C/C++编译器是否都使用此功能来加速代码?
编辑:理想的代码是这样的:
(int, int) getTwoValues(void) { return 1, 2; }
int main(int argc, char** argv)
{
(int a, int b) = getTwoValues();//a and b are actually returned in registers so future operations with a and b are faster
//do something with a and b
return 0;
}
Run Code Online (Sandbox Code Playgroud)