所以我得到了这段代码:
function q(x, y, z) {
return n = Math.floor(x+(x+y+z)/3),
o = Math.floor(y+(x+y+z)/3),
p = Math.floor(z+(x+y+z)/3),
x -= n-(n+o+p)/6,
y -= o-(n+o+p)/6,
z -= p-(n+o+p)/6,
n = n % 3232 + 3232,
o = o % 3232 + 3232,
p = p % 3232 + 3232,
l = [ 1, 1, 0, -1, 1, 0, 1,-1, 0,
-1,-1, 0, 1, 0, 1, -1, 0, 1,
1, 0,-1, -1, 0,-1, 0, 1, 1]
}
很明显我遇到了很多问题,但是如果有人理解的话,请告诉我,它有什么样的外观,比如在Java中呢?
答案 0 :(得分:2)
从MDN comma operator,说明逗号运算符的工作原理:
逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。
和assignment operators,说明"结果"表达式xyzzy = 42
的内容被加载到xyzzy
。
为了将单个值分配给多个变量,可以链接赋值运算符。
因此只返回一个值,即您已分配给l
的内容。
它与更常规的":
实际上相同n = Math.floor(x+(x+y+z)/3);
o = Math.floor(y+(x+y+z)/3);
p = Math.floor(z+(x+y+z)/3);
:
l = [ 1, 1, 0, -1, 1, 0, 1,-1, 0,
-1,-1, 0, 1, 0, 1, -1, 0, 1,
1, 0,-1, -1, 0,-1, 0, 1, 1];
return l;
答案 1 :(得分:1)
你可以返回一个包含你所描述的参数的对象,只需用{}和changing = to:围绕它们,这样它就变成了:
function q(x, y, z) {
return {n: Math.floor(x+(x+y+z)/3),
o: Math.floor(y+(x+y+z)/3),
p: Math.floor(z+(x+y+z)/3),
...}
}
要小心使用x,y,z,因为它们是你的函数输入参数。
如果您随后执行此功能并存储其值:
var result = q(1,2,3);
您可以通过以下方式获取每个值:
result.o;
result.p;
result.l;
您将创建一个包装器对象,其中包含您希望返回的每个变量。