0

このソース コードを Web サイトで見たのですが、意味がわかりません。誰か教えてもらえませんか? どうもありがとうございます。

private function buildCache()
{
    !empty($this->cache_list) && $this->cache->loadCache($this->cache_list);
}
4

3 に答える 3

4

サポートしにくい悪いコードの例です。

この!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 であり、評価する必要はありません)。基本的に、同じですAA && BB$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を呼び出します (そうでない場合、が空の場合、空の値を引数として渡すことを呼び出すのはおそらく無意味です)。loadCachecache_listcache_listloadCache

于 2012-04-18T05:41:31.397 に答える
0

$this->cache_listが空ではなく、$this->cache->loadCache()関数が true を返す場合を意味します

于 2012-04-18T05:41:21.310 に答える
0

私はそれが次のショートカットだと思います:

private function buildCache()
{
    if( ! empty($this->cache_list)){
        $this->cache->loadCache($this->cache_list);
    }
}

「cache_list」があれば、それをロードします。これらのアクションの詳細については、クラスまたはフレームワークのドキュメントを確認する必要があります。

于 2012-04-18T05:43:11.130 に答える