或两个函数之间的调用
|| ||的意义是什么? 2 像或两个函数之间的调用
之间的函数调用
{
//some code
return Find(n.left,req)||Find(n.right,req);
}
http://www.careercup.com/question?id=7560692可以有一个人帮助我理解。提前谢谢了。
在Java(和C和C#)||意味着“懒惰或”。单笔画|也意味着“或”,但操作略有不同。
要计算|| b,计算机会计算a的真值(true或false),如果a为真,则返回真值而不会计算b,因此单词“lazy”。只有a是假的,它是否会检查b是否为真(如果a或b为真)。
要计算A | B,计算机工作了a和b,然后再“ORS”的答案值在一起。
“lazy or”||效率更高,因为它有时根本不需要计算b。你可能想要使用| b的唯一原因是,如果b实际上是一个函数(方法)调用,并且由于该方法的某些副作用,您希望确保它只执行一次。我个人认为这种糟糕的编程技术,并且在很少的情况下,我希望b总是被明确地计算出来,我明确地这样做,然后使用懒惰或者。
例如考虑的函数或方法foo(),它返回一个布尔值。取而代之的
布尔X = A | FOO(东西);
我会写
boolean c = foo(something); boolean x = a || c;
它明确调用foo()一次,所以你知道发生了什么。
更好的编程实践,恕我直言。确实,最好的做法是完全消除foo()中的副作用,但有时很难做到这一点。
如果您使用懒惰或||想想你评估它的顺序。如果a很容易计算并且通常是真的,那么|| b将比b || a更有效,因为大多数时候只需简单计算就可以了。相反,如果b通常是错误的并且很难计算,那么b || a不会比| b更有效。如果a或b中的一个是常量而另一个是方法调用,则应该将常量作为第一项|| foo()而不是foo()|| a,因为方法调用总是比使用简单的局部变量。
希望这会有所帮助。
彼得·韦伯
这意味着,它返回真,如果这两个功能中的一个为真(或两者)。
依赖于编程语言,方法调用查找(n.left,REQ) - >如果这是真的 - 返回true。如果它是假的,它调用Find(n.right,req)并返回它的布尔值。
感谢Wasafa1和M.M – 2013-02-11 08:18:06
它表示逻辑中的OR运算符。
如果至少有一个Find(...
返回true
,当前函数的结果将是true
。
return Find(n.left,req)||Find(n.right,req);
表示执先找到{查找(n.left,REQ)}并返回true,如果它返回true或
执行所发现的第二返回true值,如果它返回true,否则为false。
这是不是一个真正的关于*算法*的问题 - 这是一个关于语言的*运算符*的问题,你还没说是什么语言。找出你感兴趣的语言,然后查看相关语言规范中的含义。 (这几乎肯定是条件OR运算符,但你应该自己查找它。) – 2013-02-11 08:02:25
谢谢,请考虑我不是专家,而是新程序员 – 2013-02-11 08:17:33