我刚刚在网站上看到了这个源代码,但我不知道这意味着什么,谁能告诉我它是什么?非常感谢你。
private function buildCache()
{
!empty($this->cache_list) && $this->cache->loadCache($this->cache_list);
}
答案 0 :(得分:4)
这是很难支持的错误代码的例子。
!empty($this->cache_list) && $this->cache->loadCache($this->cache_list);
语句相当于$dummy = !empty($this->cache_list) && $this->cache->loadCache($this->cache_list);
。
存在惰性评估这样的事情,因此在A && B
,B
只会评估A
是否为真(否则A && B
明显是假的,并且无需评估B
)。基本上,$x = a() && b()
与
$x = true;
if(!a()) {
$x = false;
} else {
$x = b();
}
因此,我们可以将原始陈述扩展为
$dummy = true;
if(empty($this->cache_list)) {
$dummy = false;
} else {
$dummy = $this->cache->loadCache($this->cache_list);
}
,记住我们不需要$dummy
变量,与
if(!empty($this->cache_list)) {
$this->cache->loadCache($this->cache_list);
}
尽管此代码比原始代码长2行,但它更容易理解和保持。您应该编写类似于最终版本的代码,并避免编写类似于原始单行的任何内容。
你可以自己看到它:虽然你很难分辨出原来的单行内容是什么(你很难在SO上问问题),很容易看出是什么在最终版本中继续:如果cache_list
不为空,我们正在调用loadCache
将cache_list
作为参数传递给它(否则,如果cache_list
将是为空,将loadCache
作为参数传递给它的空值可能毫无意义。
答案 1 :(得分:0)
这意味着如果$this->cache_list
不为空且$this->cache->loadCache()
函数返回true
答案 2 :(得分:0)
我想这是以下的捷径:
private function buildCache()
{
if( ! empty($this->cache_list)){
$this->cache->loadCache($this->cache_list);
}
}
如果有'cache_list',则会加载它。 您需要检查类或框架文档以获取有关这些操作的更多信息。