このソース コードを Web サイトで見たのですが、意味がわかりません。誰か教えてもらえませんか? どうもありがとうございます。
private function buildCache()
{
!empty($this->cache_list) && $this->cache->loadCache($this->cache_list);
}
このソース コードを Web サイトで見たのですが、意味がわかりません。誰か教えてもらえませんか? どうもありがとうございます。
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);
です。
遅延評価のようなものがあるため、 inA && B
はtrueB
のみが評価されます (そうでない場合は、故意に false であり、評価する必要はありません)。基本的に、同じです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」があれば、それをロードします。これらのアクションの詳細については、クラスまたはフレームワークのドキュメントを確認する必要があります。