zoukankan      html  css  js  c++  java
  • ReactiveX 学习笔记(23)RxCpp

    RxCpp

    RxCpp 是 ReactiveX 的 C++ 语言实现。

    Examples

    下载 RxCpp

    $ git clone --recursive https://github.com/ReactiveX/RxCpp.git
    

    之后,再将 RxCpp/Rx/v2/src 加入 include 文件夹中。

    #include "rxcpp/rx.hpp"
    namespace Rx {
        using namespace rxcpp;
        using namespace rxcpp::sources;
        using namespace rxcpp::operators;
        using namespace rxcpp::util;
    }
    using namespace Rx;
    

    Creating

    auto ints = observable<>::create<int>(
        [](subscriber<int> s){
            s.on_next(1);
            s.on_next(2);
            s.on_completed();
        });
    ints.subscribe(
        [](int v){printf("OnNext: %d
    ", v);},
        [](){printf("OnCompleted
    ");});
    /*
    OnNext: 1
    OnNext: 2
    OnCompleted
    */
    

    Converting

    std::array< int, 3 > a={{1, 2, 3}};
    auto values1 = observable<>::iterate(a);
    values1.subscribe(
        [](int v){printf("OnNext: %d
    ", v);},
        [](){printf("OnCompleted
    ");});
    /*
    OnNext: 1
    OnNext: 2
    OnNext: 3
    OnCompleted
    */
    

    Combining

    auto values = observable<>::range(1); // infinite (until overflow) stream of integers
    auto s1 = values.
    take(3).
    map([](int prime) { return std::make_tuple("1:", prime);});
    auto s2 = values.
    take(3).
    map([](int prime) { return std::make_tuple("2:", prime);});
    s1.
    concat(s2).
    subscribe(apply_to(
        [](const char* s, int p) {
            printf("%s %d
    ", s, p);
        }));
    /*
    1: 1
    1: 2
    1: 3
    2: 1
    2: 2
    2: 3
    */
    
    auto values = observable<>::range(1); // infinite (until overflow) stream of integers
    auto s1 = values.
    map([](int prime) { return std::make_tuple("1:", prime);});
    auto s2 = values.
    map([](int prime) { return std::make_tuple("2:", prime);});
    s1.
    merge(s2).
    take(6).
    as_blocking().
    subscribe(apply_to(
        [](const char* s, int p) {
            printf("%s %d
    ", s, p);
        }));
    /*
    1: 1
    2: 1
    1: 2
    2: 2
    1: 3
    2: 3
    */
    
  • 相关阅读:
    Android捕捉错误try catch 的简单使用
    ubuntu下安装lua和tolua++
    mosh安装与使用
    三,温习redis持久化解析与配置
    二,温习redis(工具命令使用)
    一,温习Redis (详解从安装到配置)
    报错!-> CPU100%-但是找不到使用cpu的进程
    linux安全---防火墙(iptables)理论解析
    Mysql8.0版二进制安装(my.cnf文件灵活编写)
    ansible实现template管理nginx
  • 原文地址:https://www.cnblogs.com/zwvista/p/9589298.html
Copyright © 2011-2022 走看看