【发布时间】:2025-12-19 05:05:07
【问题描述】:
我查看了Raphael.js 的源代码,以了解他如何将 RGB 值转换为 HSB。我发现了他所做的函数,并且正在将其转换为 Python 时,我遇到了这个漂亮的三元嵌套三元运算符:
H = (C == 0 ? null :
V == r ? (g - b) / C :
V == g ? (b - r) / C + 2 :
(r - g) / C + 4
);
这让我陷入了一个循环,因为 Python 没有与 Javascript 相同的三元运算符。我花了一段时间查看它,最终将这段更理智的代码(仅使用 if/else)从其中散列出来:
if (C == 0) {
H = null;
} else {
if(V == r) {
H = (g - b) / C;
} else {
if(V == g) {
H = (b - r) / C + 2;
} else {
H = (r - g) / C + 4;
}
}
}
我的解释正确吗?我只是问这个,因为如果它不正确,我将面临大量调试。所以。我“明白”了吗?
【问题讨论】:
-
是的,看起来你的逻辑是对的,除了一些大小写差异
-
if(c == 0)处的第一个c应该是大写c,不是吗? -
嗯,是吗?我感觉就像在飞镖上扔飞镖,我的后腿被绑在背后,蒙上眼睛,打进了一个靶心。是的,@NiftyDude,这是正确的。谢谢你的收获!
-
看起来正确。由于您正在转换为 python,我相信您不会在意这种情况,但请注意 JavaScript 中的
==确实类型强制,因此两者可能会有所不同。 -
@dwerner:是的,这是真的。感谢您指出这一点。
标签: javascript if-statement ternary-operator