マインクラフト非公式フォーラム

本フォーラムでは多彩なサービスを提供しています。

利用方法は「Wiki」より確認できます。

ぜひご登録をお願いいたします!

PocketMine-MP ClosureTaskをもっと便利に

:mc_296-0: はじめに​

スクリーンショット (160).png

覚え書き。
カウントダウンとか実装するときダラダラ書いちゃうから簡潔に書けるようにした。
 


 

:mc_340-0: さんぷる​


 


 

:mc_341-0: さいごに​

共有できるもんはしとこうね
 

boymelancholy

新メンバー
普通にClosureTask使うときはこんな感じに書くよ

PHP:
$handler = $plugin->getScheduler()->scheduleRepeatingTask(
    new ClosureTask(
        function() use(&$handler) {
            if (/*消したいとき*/) {
                $handler->cancel();
            }
        }
    ),
    1 * 20
);

参照渡し
 

famima65536(QRF)

新メンバー
普通にClosureTask使うときはこんな感じに書くよ

PHP:
$handler = $plugin->getScheduler()->scheduleRepeatingTask(
    new ClosureTask(
        function() use(&$handler) {
            if (/*消したいとき*/) {
                $handler->cancel();
            }
        }
    ),
    1 * 20
);

参照渡し
CancelTaskException を使うと参照渡しをなくせますね。
PHP:
$handler = $plugin->getScheduler()->scheduleRepeatingTask(
    new ClosureTask(
        function() {
            if (/*消したいとき*/) {
                throw new CancelTaskException;
            }
        }
    ),
    1 * 20
);
 

boymelancholy

新メンバー
CancelTaskException を使うと参照渡しをなくせますね。
PHP:
$handler = $plugin->getScheduler()->scheduleRepeatingTask(
    new ClosureTask(
        function() {
            if (/*消したいとき*/) {
                throw new CancelTaskException;
            }
        }
    ),
    1 * 20
);
おおー!
知らなかった助かります。
 
Top