我有幾個獨立的函數,根據其他條件返回true或false。當他們都返回true時,我想要發生一個動作,但是我希望所有的函數都能夠運行,而不管有多少個返回false。如果我只是想檢查所有的功能都返回true,我會用:如果聲明使用按位運算符來強制評估
if (func1() && func2() && func3()){
//Some code
}
這樣做的問題是,如果功能之一返回false所有功能的權利將不會執行。一種方法我還沒有嘗試過在if表達式使用按位與運算符(&),它看起來像:
if (func1() & func2() & func3()){
//Some code
}
我略略的測試這種方法,它似乎然而,要產生預期的結果我找不到在別處使用的這種方法,我想知道是否有任何理由可能產生意想不到的結果?
也有一個很好的理由不比較使用這種方法的功能的結果?
我最好的猜測是,必須對函數「必須」進行評估,以便進行按位比較,否則當發現錯誤時會停止更有效的停止。只要您的退貨類型在檢查中,我並不認爲它有問題。 – NickSuperb
就我個人而言,我認爲這是一個值得懷疑的設計決定,要依靠這樣的副作用。它使代碼變得脆弱。 – Pointy