我今天在一些PHP代码中看到了这一点:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
我不熟悉这里使用的?:
接线员.它看起来像一个三元运算符,但省略了谓词为真时要计算的表达式.什么意思?
我今天在一些PHP代码中看到了这一点:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
我不熟悉这里使用的?:
接线员.它看起来像一个三元运算符,但省略了谓词为真时要计算的表达式.什么意思?
如果左操作数为truthy,则计算左操作数,否则计算右操作数.
在伪代码中,
foo = bar ?: baz;
大致解决了
foo = bar ? bar : baz;
或
if (bar) {
foo = bar;
} else {
foo = baz;
}
不同的是,bar
只会被判断一次.
您还可以使用它执行foo
的"自检",如您发布的代码示例所示:
foo = foo ?: bar;
This will assign bar
to foo
if foo
is null 或 falsey, else it will leave foo
unchanged.
Some m或e examples:
<?php
var_dump(5 ?: 0); // 5
var_dump(false ?: 0); // 0
var_dump(null ?: 'foo'); // 'foo'
var_dump(true ?: 123); // true
var_dump('rock' ?: 'roll'); // 'rock'
?>
By the way, it's called the Elvis operat或.