UniRx: Hot と Cold (2)

UniRx: Hot と Cold (1) - C#練習日記 の続きです。63 of 115 からです。

Cold な Observable は分岐できない

Cold な Observable は Observer をひとつしか持てません。

using System;
using UniRx;
using UnityEngine;

public class Main : MonoBehaviour
{
    void Start()
    {
        var s = Observable.Range(1, 3)
            .Do(e => Debug.Log(e));

        s.Subscribe(); // 1 本目のストリーム
        s.Subscribe(); // 2 本目のストリーム
    }
}

実行結果です。

1 // 1 本目のストリーム
2
3
1 // 2 本目のストリーム
2
3

このようにストリーム自体が 2 本になります。

f:id:noriok:20180917142610p:plain

Hot な Observable は分岐できる

Hot な Observable は Observer は複数持てます。

using System;
using UniRx;
using UnityEngine;

public class Main : MonoBehaviour
{
    void Start()
    {
        var s = Observable.Range(1, 3)
            .Do(e => Debug.Log(e))
            .Publish();

        s.Subscribe();
        s.Subscribe();

        s.Connect();
    }
}

実行結果です。

1 // ストリームは 1 本のみ
2
3

f:id:noriok:20180917142623p:plain