我对 javascript 一无所知,需要帮助解释以下内容:
{
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch(max){
case r: h = (g - b) / d + (g < b ? 6 : 0); break;
case g: h = (b - r) / d + 2; break;
case b: h = (r - g) / d + 4; break;
}
}
有人可以解释一下这意味着什么,这样我就可以在 Objective-C 中编写等效代码了吗?
谢谢!
或者让我的问题更切题。你能帮我翻译(人类语言)下面这行吗?
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
最佳答案
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
表达式 ? value1 : value2
运算符计算 expression
,如果为真,则返回 value1
,否则返回 value2
。
所以在这种特殊情况下,它将评估 l > 0.5
,如果这是真的,它会将 s
设置为 d/(2 - max - min)
,否则它会将 s
设置为 d/(max + min)
编辑以回应评论:
我真的不太了解 Javascript,但是至于 switch
语句,它似乎使用了变量大小写。这在 Objective-C(或 C,就此而言)中是不允许的。但它似乎试图找到 r
、g
或 b
变量中的哪个等于 max
变量...
在 Objective-C(或 C 或 C++)中,switch
语句只能使用常量大小写值,如下所示:
switch (myVariable)
{
case 0:
//do something if myVariable == 0
break;
case 1:
//do something if myVariable == 1
break;
case 2:
//do something if myVariable == 2
break;
}
我要在这里猜测一下,在带有可变大小写的 javascript 中,它可能等同于类似的东西
if (max == r)
h = (g - b) / d + (g < b ? 6 : 0);
else if (max == g)
h = (b - r) / d + 2;
else if (max == b)
h = (r - g) / d + 4;
如果任何对 javascript 有更多了解的人可以为我们确认这一点,那就太好了。
关于javascript 到 objective-c 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412990/