我刚刚在一个网站上看到了这个源代码,但我不知道它是什么意思,谁能告诉我它是什么?非常感谢。
private function buildCache()
{
!empty($this->cache_list) && $this->cache->loadCache($this->cache_list);
}
这是难以支持的不良代码示例。
!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
将空值传递给它作为参数可能毫无意义)。
这意味着如果$this->cache_list
不为空并且$this->cache->loadCache()
函数返回 true
我想这是以下方面的快捷方式:
private function buildCache()
{
if( ! empty($this->cache_list)){
$this->cache->loadCache($this->cache_list);
}
}
如果有"cache_list",它会加载它。您必须查看类或框架文档以获取有关这些操作的详细信息。