javascript 到 objective-c 的转换

标签 javascript objective-c

我对 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,就此而言)中是不允许的。但它似乎试图找到 rgb 变量中的哪个等于 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/

相关文章:

javascript - 在具有扩展隐藏内容的表中保持 View 不变

javascript - 使用 Vue-cli,我在哪里声明我的全局变量?

iOS UITableview 删除带有动画的行

objective-c - 如何在 NSVisualEffectView 上叠加背景色并使用鲜艳的控件?

javascript 正则表达式 匹配 ^[^#]?

javascript - 使用 JQuery 更改背景图像

ios - 从 UIViewController 实例化 UIView 子类

objective-c - Cocos2d 上的分屏

javascript - 模板助手被多次调用

java - 用于创建交互式 PDF 的 API