我想了解public class A {
void doSomething() {
System.out.println("a");
}
}
public class B extends A {
@Override
void doSomething() {
System.out.println("b");
}
}
A a = new B();
a.doSomething(); // will print "b"
的确如何运作。因此,在阅读php.net中的文档和stackoverflow上的一些帖子后,我测试了很多示例。
但是,我无法理解这段代码:
null coalescing operator
因为它相当于(来自php.net#null-coalescing)
<?php
$x = false ?? 'stackoverflow';
var_dump($x); // bool(false)
并且isset(false) ? false : 'stackoverflow';
生成isset(false)
。
有人可以向我解释一下吗?
答案 0 :(得分:2)
Null coalescing运算符返回第一个操作数(如果存在且不为NULL);
否则返回第二个操作数。
在您的情况下,第一个操作数为false,因此将其分配给变量。例如;如果将null初始化为第一个操作数,则它将分配第二个操作数值,如图所示。
$a = null;
$x = $a ?? 'abc';
var_dump($x);
Result :
string(3) "abc"