Javascript 将一些JS转换为C
我不想把一些代码从JS翻译成C,但真的无法想象其中的一部分Javascript 将一些JS转换为C,javascript,c#,Javascript,C#,我不想把一些代码从JS翻译成C,但真的无法想象其中的一部分 function getHisto(pixels) { var histosize = 1 << (3 * sigbits), histo = new Array(histosize), index, rval, gval, bval; pixels.forEach(function(pixel) { rval = pix
function getHisto(pixels) {
var histosize = 1 << (3 * sigbits),
histo = new Array(histosize),
index, rval, gval, bval;
pixels.forEach(function(pixel) {
rval = pixel[0] >> rshift;
gval = pixel[1] >> rshift;
bval = pixel[2] >> rshift;
index = getColorIndex(rval, gval, bval);
histo[index] = (histo[index] || 0) + 1;
});
return histo;
}
如果你需要任何额外的信息,我会尽力提供
编辑1:我特别指的是histo[index]|| 0行histo[index]=histo[index]| 0+1
正在添加到数组中,并通过当前索引+1或0+1确定将其放置在何处
基本上,or | |处理它作为第一个添加到histo中的边缘情况。该行
histo[index] = (histo[index] || 0) + 1;
是实现这一目标的捷径:
if (!histo[index]) {
histo[index] = 0;
}
histo[index] = histo[index] + 1;
这对你来说可能更有意义
请参见方括号表示法与C中的表示法相同,它是按索引进行数组访问 看一看 比如说。如果您有一个包含两项的数组:
// javascript
var x = ["a", "b"];
// C#
var y = string[] {"a", "b"};
第一项位于索引0,第二项位于索引1。然后,您可以使用方括号符号访问每个项目:
var first = x[0];
var second = x[1];
||是一个
在C中替换这个的等价物是a
基本上在C语言中,你的行应该是这样的
histo[index] = (histo[index] ?? 0) + 1;
什么使你困惑?历史[索引]| | 0部分?这只是意味着,如果histo[index]未定义,请使用零。对不起,我忘了指定使我困惑的内容。
histo[index] = (histo[index] ?? 0) + 1;