Есть ли какое-либо различие между методами итератора, возвращаясь IEnumerable <T> и IEnumerator <T>?

если вы используете библиотеку laravel cboden / ratchet для сокета, перейдите в app / Console / Commands / WebSocketServer.php Замените функцию handle этими строками кода и используйте пути к файлам сертификации 'local_cert' и 'local_pk'

public function handle()
{

    $loop   = Factory::create();
    $webSock = new SecureServer(
        new Server('0.0.0.0:8090', $loop),
        $loop,
        array(
            'local_cert'        => '/opt/ssl/chamberstock_com.crt', // path to your cert
            'local_pk'          => '/opt/ssl/server.key', // path to your server private key
            'allow_self_signed' => TRUE, // Allow self signed certs (should be false in production)
            'verify_peer' => FALSE
        )
    );
    // Ratchet magic
    $webServer = new IoServer(
        new HttpServer(
            new WsServer(
                new WebSocketController()
            )
        ),
        $webSock
    );
    $loop->run();

}
7
задан Alexey Romanov 6 January 2009 в 15:17
поделиться

1 ответ

Как отмечено, Вы не можете foreach по IEnumerator<T>. Из-за этого это мешает интегрироваться в места в коде, где Вы хотите выполнить итерации, по какому Вы возвращаетесь.

Кроме того, imporance здесь - это IEnumerable<T> предназначен, чтобы быть фабрикой, так, чтобы можно было произвести реализации IEnumerator<T> это непосредственно не связывается с реализацией набора T.

Еще более важный теперь то, что все дополнительные методы для LINQ отделываются IEnumerable<T>, таким образом, Вы захотите сделать свои перечисления максимально легкими работать с путем возврата этого.

8
ответ дан 7 December 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: