使用“?:”模拟短路评估
Using "?:" to emulate short-circuit evaluation
如何使用短路和 ?:
运算符来模拟 foo() || bar()
和 foo() && bar()
?
我是一名学生,从未使用过 ?:
运算符,想尝试一下。在做了一些谷歌搜索后,我发现它本质上是:
Condition ? (things to do if true) : (things to do if false);
不使用 &&
和 ||
是否可以实现?我正试图掌握短路问题,因为我对它很陌生,而且决赛即将来临!
假设foo()
和bar()
都是returnboolean
,那么
foo() || bar()
与
相同
foo() ? true : bar();
因为foo()
先求值,bar()
只有在foo()
为false时才需要求值。
同样,
foo() && bar()
与
相同
foo() ? bar() : false;
foo()
先求值,bar()
只有在foo()
为真时才需要求值。
如何使用短路和 ?:
运算符来模拟 foo() || bar()
和 foo() && bar()
?
我是一名学生,从未使用过 ?:
运算符,想尝试一下。在做了一些谷歌搜索后,我发现它本质上是:
Condition ? (things to do if true) : (things to do if false);
不使用 &&
和 ||
是否可以实现?我正试图掌握短路问题,因为我对它很陌生,而且决赛即将来临!
假设foo()
和bar()
都是returnboolean
,那么
foo() || bar()
与
相同foo() ? true : bar();
因为foo()
先求值,bar()
只有在foo()
为false时才需要求值。
同样,
foo() && bar()
与
相同foo() ? bar() : false;
foo()
先求值,bar()
只有在foo()
为真时才需要求值。