public int Number;
public int NumberTwo;
int GiveDouble() {
return Number * 3;
return NumberTwo * 5; // compiler says this is unreachable
}
void Start() {
int returnedNumber = GiveDouble();
// ...
int returnedNumber2 = GiveDouble();
// ...
}
我试图将一个函数的2个值返回到另一个函数的2个不同的变量。
在这种情况下...我正在从GiveDouble()
函数向ReturnedNumber
函数中的变量ReturnedNumber2
和Start()
发送2个值。输入在UNIY engine
中给出。
请检查我添加的图片。弹出窗口显示在第二个返回函数中检测到无法访问的代码。
我的问题可能不太合理。我现在还在学习。我想知道为什么会这样吗?
答案 0 :(得分:5)
编译器是正确的;一个调用只能返回一个值。您正在调用方法两次,但这不是恢复方法-它从头开始再次调用它,因此每次都会返回第一个结果。 / p>
这里的一个选项可以是“值元组”:
(int, int) GiveDouble()
{
return (Number * 3, NumberTwo * 5);
}
void Start()
{
(int returnedNumber, int returnedNumber2) = GiveDouble();
}
或在元组上使用更好的命名方式:
(int Foo, int Bar) GiveDouble()
{
return (Number * 3, NumberTwo * 5);
}
答案 1 :(得分:1)
为清楚起见,当您说return Number * 3;
时,您在该处结束该方法,然后返回Number * 3
。 return使编译器退出该方法并继续前进,因此基本上就像说您已完成该方法一样,这就是代码不可访问的原因。
int GiveDouble() {
return Number * 3;
return NumberTwo * 5; // compiler says this is unreachable
}
删除并尝试
int TimesThree(int one){
return one*3;
}
int TimesFive(int two){
return two*5;
}
然后更改:
int returnedNumber = GiveDouble();
// ...
int returnedNumber2 = GiveDouble();
到
int returnedNumber = TimesThree(Number);
// ...
int returnedNumber2 = TimesFive(NumberTwo);