我想知道ternary operator
主要在C++
,但我認爲它也可能適用於其他語言。三元運營商默認值
我遇到的問題的最好的例子(或者我應該稱之爲問題?我想是一個概念問題),將是夾持值。
float clamped = (x<0.3) : 0.3 ? x;
我多麼希望自己寫這段代碼,但是x
可能是複雜的說,我們有這樣的事情:
float clamped = (1.f - x + my_function()) > .2f ? .2f : (1.f - x + my_function());
這是它伸出手在我的意見,我會它改寫:
float clamped = (1.f - x + my_function());
if (clamped > .2f)
clamped = .2f;
所以這導致了兩個問題真的
1:是否有違約行爲,因此我可以說,「如果真的這樣做,否則只是做它說:」在僞代碼是這樣的:float clamped = (1.f - x + my_function()) > .2f : .2f ? **default**;
2:如果我還是會做的第一種方式,它會首先評估條件,如果它是false
,那麼進行另一次評估以獲得(1.f - x + my_function())
的值?
希望其中的一些是有道理的,這是我到現在還沒有得到理解的東西。
而最大的問題是..爲什麼我還沒有做過這方面?謝謝你,這當然是真的。然而,有些情況下我可能想要類似地使用它,但有一個'type a =(blah):x?等等;'最小/最大'不能解決它,但真的很感激。 – qrikko
+1(但與OP的實際代碼對應的函數將是'min')。 – Angew
@qrikko重申你的通用例子:用'true'替換第二個'blah'。 (但這只是針對這個具體的例子。) –