๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“Œ Language/Swift

[RxSwift] Operator๋ž€?

by Fomagran ๐Ÿ’ป 2021. 1. 19.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!

 

RxSwift  ๋Š” ์‰ฝ๊ฒŒ Observable์„ ์ƒ์„ฑํ•˜๊ณ  ๋ณ€ํ˜•ํ•˜๊ณ  ํ•ฉ์น˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” Operator๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

์˜ค๋Š˜์€ ๋‹ค์–‘ํ•œ Operator๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!


Create

 

๊ฐ€์žฅ ๋จผ์ € ์•Œ์•„๋ณผ๊ฑด Observable์„ ์ƒ์„ฑํ•˜๋Š” Operator ์ž…๋‹ˆ๋‹ค.

 

1. create

๊ฐ€์žฅ ๊ธฐ๋ณธ์œผ๋กœ ์˜ต์ €๋ฒ„๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

2. just

just๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ •ํ•ญ๋ชฉ์„ ํ•˜๋‚˜๋งŒ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. from

From์€ just์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ just๋Š” ํ•œ๋ฒˆ์— ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ๋ฐ˜๋ฉด from์€ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค.

4.of

of๋Š” just์ฒ˜๋Ÿผ [1,2,3] ๋ฐฐ์—ด์„ ํ•œ๋ฒˆ์— ๋ฐฉ์ถœํ•  ์ˆ˜๋„ ์žˆ๊ณ  from์ฒ˜๋Ÿผ ๊ฐ๊ฐ์˜ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฐฉ์ถœํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ๋งŒ ๋ฐฉ์ถœํ•˜๋ ค๋ฉด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

 


Transform

 

๋‘๋ฒˆ์งธ๋Š” ๋ฐฉ์ถœํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” Operator์ž…๋‹ˆ๋‹ค.

 

1.map

map์€ ๋ฐฉ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ณ€ํ˜•ํ•ด์„œ ๋ฐฉ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.flatMap

flatMap์€ map๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๊ฐ’์„ ๋ฐฉ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ๋ฆ„์ž์ฒด(Observable)๋ฅผ ๋ฐ”๊ฟ”์„œ ํ๋ฆ„(Observable)์„ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์„ค๋ช…ํ•˜๋ฉด observableInt์—์„œ 1์„ ๋ฐฉ์ถœํ•  ๋•Œ observableString์„ ๋ฐฉ์ถœํ•˜์—ฌ A,B,C๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐฉ์ถœ๋ฉ๋‹ˆ๋‹ค.

2,3๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฉ์ถœ๋ฉ๋‹ˆ๋‹ค.

3.scan

์ด์ „์— ๋ฐฉ์ถœ๋œ ๊ฒฐ๊ณผ์™€ ์ƒˆ๋กญ๊ฒŒ ๋ฐฉ์ถœ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ์„œ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

 


Filter

 

์„ธ๋ฒˆ์งธ๋Š” ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ํ•„ํ„ฐ๋งํ•˜๋Š” Operator์ž…๋‹ˆ๋‹ค.

 

1.filter

filter๋Š” ๋ฐฉ์ถœํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์›ํ•˜๋Š” ๊ฐ’์— ๋งž๊ฒŒ ํ•„ํ„ฐํ•ด์„œ ๊ฑธ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2.first

first๋Š” ๋ฐฉ์ถœํ•œ ๊ฒฐ๊ณผ ์ค‘ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค. ํŠน์ง•์€ ์˜ต์…”๋„๋กœ ๋ฐฉ์ถœ๋ฉ๋‹ˆ๋‹ค.

 

3.takeLast

takeLast๋Š” ๋ฐฉ์ถœํ•œ ๊ฒฐ๊ณผ ์ค‘ ๋์—์„œ๋ถ€ํ„ฐ ๋ช‡๋ฒˆ์งธ๊นŒ์ง€ ๋ฐฉ์ถœํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ณ  ๋ฐฉ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.take

takeLast์™€ ๋ฐ˜๋Œ€๋กœ ๋ฐฉ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ฒซ๋ฒˆ์งธ๋ถ€ํ„ฐ ๋ช‡๋ฒˆ์งธ๊นŒ์ง€ ๋ฐฉ์ถœํ• ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.elementAt

๋ฐฉ์ถœํ•œ ๊ฒฐ๊ณผ ์ค‘ ์›ํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฉ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Combine

 

๋„ค๋ฒˆ์งธ๋Š” ๋‘ ์˜ต์ €๋ฒ„๋ธ”์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ํ•ฉ์น˜๋Š” Operator์ž…๋‹ˆ๋‹ค.

 

1.merge

merge๋Š” ๋‘ ์˜ต์ ธ๋ฒ„๋ธ”์„ ํ•˜๋‚˜์˜ ์˜ต์ ธ๋ฒ„๋ธ”๋กœ ํ•ฉ์ณ์ค๋‹ˆ๋‹ค. 2๊ฐœ์˜ ์˜ต์ ธ๋ฒ„๋ธ” ๋ชจ๋‘ ์™„๋ฃŒ๊ฐ€ ๋˜์–ด์•ผ ์™„๋ฃŒ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

2.combineLatest

๋‘ ์˜ต์ ธ๋ฒ„๋ธ”์˜ ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ๊ฐ’๋ผ๋ฆฌ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ ๋งŒ๋“ ๋’ค ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค.

3.zip

combineLatest์™€ ๊ฐ™์ด ๋‘ ์˜ต์ ธ๋ฒ„๋ธ”์˜ ๊ฐ’์„ ํ•ฉ์ณ์„œ ๋ฐฉ์ถœํ•˜์ง€๋งŒ ๋‘ ์˜ต์ ธ๋ฒ„๋ธ”์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์ง์ด ๋งž์•„์•ผ ๋ฐฉ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


์˜ค๋Š˜ ์ด๋ ‡๊ฒŒ 4๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์˜คํผ๋ ˆ์ดํ„ฐ๋ฅผ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”.

 

์—๋Ÿฌํ•ธ๋“ค๋ง์ด๋‚˜ Schedular์™€ ๊ด€๋ จ๋œ Operator๋Š” ๋”ฐ๋กœ ์ •๋ฆฌํ•ด์„œ ์ฐพ์•„๋ต™๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค~~

728x90
๋ฐ˜์‘ํ˜•

'๐Ÿ“Œ Language > Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[RxCocoa] Relay๋ž€?  (0) 2021.02.03
[RxSwift] Subject๋ž€?  (0) 2021.01.28
[RxSwift] Observable ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ  (0) 2020.12.29
[RxSwift] Disposable๊ณผ DisposeBag  (0) 2020.12.26
[Swift] @discardableResult๋ž€?  (0) 2020.12.24

๋Œ“๊ธ€