๋ง‰ ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์šด ์—ฐ์‚ฐ์ž ์ฃผ๋ ์ฃผ๋  ์“ฐ๋ฉด์„œ ํ—ˆ์„ธ๋ถ€๋ฆด ํ•„์š” ์—†์Œ. ๋””๋ฒ„๊น…๋งŒ ํž˜๋“ค๊ณ  ์œ ์ง€๋ณด์ˆ˜๋งŒ ํž˜๋“ค์–ด์ง

๊ฒŒ์ž„์—์„œ๋Š” CombineLatest ๊ฐ™์€ ์‰ฝ๊ณ  ์‹ค์šฉ์ ์ธ ์—ฐ์‚ฐ์ž ํ•˜๋‚˜๋งŒ ์จ๋„ ์ถฉ๋ถ„ย  ย ย 


ย  ย  ReactiveProperty<int> ์žก์€๊ณ ๋ธ”๋ฆฐ์ˆ˜ = new();

ย  ย  ReactiveProperty<int> ์žก์€์˜คํฌ์ˆ˜ = new();

ย  ย  ReactiveProperty<int> ์žก์€ํŠธ๋กค์ˆ˜ = new();


ย  ย  IDisposable ํ€˜์ŠคํŠธ๊ตฌ๋…;


ย  ย  public void ํ€˜์ŠคํŠธ์‹œ์ž‘()

ย  ย  {

ย  ย  ย  ย  ์žก์€๊ณ ๋ธ”๋ฆฐ์ˆ˜.Value = 0;

ย  ย  ย  ย  ์žก์€์˜คํฌ์ˆ˜.Value = 0;

ย  ย  ย  ย  ์žก์€ํŠธ๋กค์ˆ˜.Value = 0;


ย  ย  ย  ย  ํ€˜์ŠคํŠธ์œ ์•„์ด๋ณด์ด๊ธฐ();ย  ย  ย  ย ย 


ย  ย  ย  ย  ํ€˜์ŠคํŠธ๊ตฌ๋… = Observable.CombineLatest(

ย  ย  ย  ย  ย  ย  ์žก์€๊ณ ๋ธ”๋ฆฐ์ˆ˜, ์žก์€์˜คํฌ์ˆ˜, ์žก์€ํŠธ๋กค์ˆ˜, (๊ณ ๋ธ”๋ฆฐ, ์˜คํฌ, ํŠธ๋กค) =>

ย  ย  ย  ย  ย  ย  (๊ณ ๋ธ”๋ฆฐ, ์˜คํฌ, ํŠธ๋กค)ย 

ย  ย  ย  ย  )

ย  ย  ย  ย  .Subscribe(์žก์€๋ชฌ์Šคํ„ฐ๋“ค =>

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  ํ€˜์ŠคํŠธ์œ ์•„์ด์—…๋ฐ์ดํŠธ();


ย  ย  ย  ย  ย  ย  if(์žก์€๋ชฌ์Šคํ„ฐ๋“ค.๊ณ ๋ธ”๋ฆฐ >= 10

ย  ย  ย  ย  ย  ย  && ์žก์€๋ชฌ์Šคํ„ฐ๋“ค.์˜คํฌ >= 5

ย  ย  ย  ย  ย  ย  && ์žก์€๋ชฌ์Šคํ„ฐ๋“ค.ํŠธ๋กค >= 3)

ย  ย  ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  ย  ํ€˜์ŠคํŠธ์™„๋ฃŒ(ํ€˜์ŠคํŠธ์•„์ด๋””: "ํ† ๋ฒŒํ€˜์ŠคํŠธ");

ย  ย  ย  ย  ย  ย  ย  ํ€˜์ŠคํŠธ์œ ์•„์ด์ˆจ๊ธฐ๊ธฐ();ย ย 

ย  ย  ย  ย  ย  ย  ย  ํ€˜์ŠคํŠธ๊ตฌ๋….Dispose();

ย  ย  ย  ย  ย  ย  };

ย  ย  ย  ย  });

ย  ย  }


ย  ย  // ๊ณ ๋ธ”๋ฆฐ์ด ์ž๊ธฐ๊ฐ€ ์ฃฝ์„ ๋•Œ๋งˆ๋‹ค

ย  ย  ์žก์€๊ณ ๋ธ”๋ฆฐ์ˆ˜.Value += 1;


๊ณ ๋ธ”๋ฆฐ ์˜คํฌ ํŠธ๋กค 3๊ฐœ์˜ ๊ฐ’์ค‘ ์•„๋ฌด๊ฑฐ๋‚˜ ํ•˜๋‚˜๋งŒ ๋ฐ”๋€Œ์–ด๋„

๊ฐย ReactiveProperty์˜ย ๋งˆ์ง€๋ง‰๊ฐ’์ด ๋ฐฐ๋‹ฌ๋จ

ํ€˜์ŠคํŠธ๊ตฌ๋….Dispose() ์ดํ›„๋กœ๋Š” ๋ฐ˜์‘ ์•ˆํ•จ