刚刚在一个网站上看到了这个源代码,但是不知道是什么意思,谁能告诉我是什么意思?太感谢了。
private function buildCache()
{
!empty($this->cache_list) && $this->cache->loadCache($this->cache_list);
}
刚刚在一个网站上看到了这个源代码,但是不知道是什么意思,谁能告诉我是什么意思?太感谢了。
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 上提出问题),但很容易看到发生了什么最终版本:如果 thecache_list
不为空,我们将调用作为参数loadCache
传递cache_list
给它(否则,如果 the为空,则调用将空值作为参数传递给它cache_list
可能毫无意义)。loadCache
这意味着 if$this->cache_list
不为空并且$this->cache->loadCache()
函数返回 true
我想这是一个捷径:
private function buildCache()
{
if( ! empty($this->cache_list)){
$this->cache->loadCache($this->cache_list);
}
}
如果有一个'cache_list',它会加载它。您必须查看类或框架文档以获取有关这些操作的更多信息。