जवाबों:
यह कहा जाता है सशर्त ऑपरेटर (जो एक है त्रिगुट ऑपरेटर )।
इसका रूप है condition
:? value-if-true
: "तब" और "अन्य" value-if-false
के ?
रूप में सोचें :
।
आपके कोड के बराबर है
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
addition
एक बाइनरी ऑपरेटर है जो पूर्ववर्ती और निम्न अभिव्यक्तियों पर काम करता है (जैसे 1 + 2 प्लस 1 और 2 पर संचालित होता है), या नकार एक अपर ऑपरेटर है (जैसे-x जहां x का मान नकारा जाता है)।
यह संभवतः थोड़ा स्पष्ट है जब कोष्ठक के साथ लिखा जाता है:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
यह क्या करता है पहले कोष्ठक में भाग का मूल्यांकन करें। यदि परिणाम सत्य है तो उसके बाद का हिस्सा? और इससे पहले: वापस आ गया है। यदि यह गलत है, तो निम्नानुसार है: लौटा दिया गया है।
? :
क्या यह टर्नरी ऑपरेटर नहीं है?
var x= expression ? true:false
?: के लिए एक छोटी हाथ हालत else {}
और if(){}
समस्याओं है। तो आपका कोड इसके लिए विनिमेय है:
if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
इससे सावधान रहें। एक -1 सच का मूल्यांकन करता है, हालांकि -1! = सच और -1! = असत्य। मेरा विश्वास करो, मैंने देखा है ऐसा होता है।
इसलिए
-1? "सत्य पक्ष": "गलत पक्ष"
"सही पक्ष" का मूल्यांकन
Infinity
विभाजित करने से बचें (डिवाइड-बाय-शून्य के कारण)।