Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Combine Operator Guide

USAMI Kosuke
September 27, 2021

Combine Operator Guide

パンフレット記事「Combine Operator ガイド」についての解説と補足

YUMEMI.swift #13 〜裏iOSDC〜
https://yumemi.connpass.com/event/222372/

USAMI Kosuke

September 27, 2021
Tweet

More Decks by USAMI Kosuke

Other Decks in Programming

Transcript

  1. ʮ$PNCJOF0QFSBUPSΨ
    Πυʯղઆͱิ଍
    Ӊࠤݟެี

    1/22

    View Slide

  2. Ӊࠤݟެีʢ!VTBNJLʣ
    w J04鲠鳫鲰鳃鲚
    w 鳍鲟鳫鳢鳣גࣜձࣾJ04鲾鲻鲧鳢鱅鳁
    w .PCJMF"DU鳢鱅鲸鱅
    w ٕज़ಉਓࢽ鲗ॻ鱉鱫鱉鲃鱞
    w 鲋鲆鲄鱳鱏ख఻鱉鲇鱜鱫鱉鲃鱞
    2/22

    View Slide

  3. J04%$ύϯϑϨοτهࣄΛॻ͖·ͨ͠
    w $PNCJOF0QFSBUPS鲤鲜鳁
    w 1%' #005)

    w IUUQTUZQFEMBCCPPUIQNJUFNT
    w 鲭鳫鳏鳣鲫鱅鳁 (JU)VC

    w IUUQTHJUIVCDPNVTBNJL$PNCJOF0QFSBUPS(VJEF4BNQMF
    3/22

    View Slide

  4. τʔΫͱهࣄ
    w J04%$+BQBO鱳鳙鲜鳫鱴ɺ鲉鱴鲏鳀鱅鲧鲳鲻鲯鳟鳫
    w 鲄鲘鱯鱬ಉ࣌ࢹௌ
    w "TLUIF4QFBLFS
    w هࣄ鱬鱴্ه鱳鲍鱋鱯੝鲏্鱑鲏鱴೉鱜鱉
    w 鳍鲛鱅鳁鳈鲻鲧鲗鱔鲑鲐ਓ鱴鱉鲐ɺخ鱜鱉
    4/22

    View Slide

  5. ͦ΋ͦ΋هࣄಡΜͰΔʁ
    w ޙճ鱜鱰鱯鲏鱑鱦
    w ೳಈత鱰ಡ鲇鱋鱭ҙࣝ鱜鱯鱉鱭ಡ鲆鱯鱉
    w ๻鲇鲔鲏鱭ཷ鲆鱑鱦ɾɾɾ
    w ޙ鱬ಡ鲅ɺ鳢鱅鲿鲛鳫鲨鳢鲱鳀ɺੵಡɺɾɾɾ
    5/22

    View Slide

  6. ͪΐͬͱಡΜͰΈΑ͏
    w ࠓ೔鱴ɺهࣄ鱳಺༰鲗鱛鱨鱭ோ鲆鱫鲄鲐
    w 鳉鳫鳍鳤鲻鳀鲗࣋鱨鱫鱉鲐ਓ鱴鱡鱷ݟ鱫鱲
    w 鲃鱤鱴1%'鲸鲞鳫鳥鱅鳁 #005)

    6/22

    View Slide

  7. $PNCJOFͱ͸
    w 鱢鲇鱢鲇$PNCJOF鱨鱫鱯鱰ʁ
    w 鲢鳎鲰鲟鲧鳀鱐鲎鲢鳎鲰鲟鲧鳀鱰鲜鳑鳫鳀鲗఻鱍鲐
    w ૹ৴ʢ1VCMJTIFSʣ鱭ड৴ʢ4VCTDSJCFSʣ
    w খ鱚鱔؆୯鱯鲭鳫鳏鳣鲫鱅鳁鱬঺հ
    w 9DPEF1MBZHSPVOE鱬鱞鱕ࢼ鱠鲐
    7/22

    View Slide

  8. 0QFSBUPS
    w ૹ৴ʢ1VCMJTIFSʣ鱭ड৴ʢ4VCTDSJCFSʣҎ֎鱳ୈ鱳ཁૉ
    w 0QFSBUPS鱴ɺ1VCMJTIFS鲗ผ鱳1VCMJTIFS鱰ม׵鱞鲐
    w 鱘鱘鱬鱴map0QFSBUPS鲗঺հ
    8/22

    View Slide

  9. .BSCMF%JBHSBN
    w 0QFSBUPS鱳ਤࣔ
    9/22

    View Slide

  10. $PNCJOFͷར༻γʔϯ
    w 鳈鲜鳫鲿鲛鳫鲨
    w 7JFX.PEFM鱐鲎7JFX$POUSPMMFS鱽஋鲗఻鱍鲐ྫ
    w 鳈鲜鳫鲿鲛鳫鲨鱳鱭鱒鱰0QFSBUPS鱑໾鱰ཱ鱩
    w $PNCJOF鱬鳈鲜鳫鲿鲛鳫鲨鱑鱒鲑鱉鱰ॻ鱖鲐
    10/22

    View Slide

  11. 1VCMJTIFSͷܕফڈ
    w 鳈鲜鳫鲿鲛鳫鲨鱳鲫鱅鳁鱳த鱬࢖鱨鱫鱉鱤ܕফڈ鱳঺հ
    w 0QFSBUPS鲗ෳ਺࢖鱋鱭ɺ1VCMJTIFS鱳ܕ鱑ෳࡶ鱰鱯鲐
    w ܕফڈ鱞鲐鱤鲆鱳eraseToAnyPublisher0QFSBUPS鱑鱇鲐
    w ෳࡶ鱯ܕ鲗AnyPublisherܕ鱰鱞鲐
    11/22

    View Slide

  12. 0QFSBUPSͷछྨ
    w ެࣜ鳢鳍鲙鳤鳫鲱鲗ݟ鲐鱭0QFSBUPS鱳ଟ鱚鱰ѹ౗鱚鲑鲐
    w 鲍鱔࢖鱋鲇鱳鲗೺Ѳ鱞鲐鱳鱑େࣄ
    12/22

    View Slide

  13. ܕΛม׵͢Δ
    w ઌ鱰ग़鱜鱤map鱳ྫ鱬鱴ɺܕ鱴ಉ鱝鱬஋鱥鱖ม׵鱜鱫鱉鱤
    w map鱬ܕ鲗ม׵鱞鲐鳉鲷鱅鳫鱳঺հ
    w 鱘鲑鱴࣍鱳0QUJPOBMܕ鱳࿩鱰鱩鱯鱕鱤鲆鱳લஔ鱒
    13/22

    View Slide

  14. 0QUJPOBMܕͷΞϯϥοϓ
    w 0QUJPOBMܕ鲗鱋鲃鱔ѻ鱋鱤鲆鱳0QFSBUPS
    w replaceNil
    w compactMap
    14/22

    View Slide

  15. ม׵࣌ͷΤϥʔ
    w 鲠鳡鱅鲜鳑鳫鳀鲗ൃੜ鱚鱠鲐0QFSBUPS
    w tryMap
    w ࣍鱳鲠鳡鱅鳇鳫鳁鳢鳫鲨鱳࿩鱰鱩鱯鱕
    15/22

    View Slide

  16. ΤϥʔϋϯυϦϯά
    w 鲠鳡鱅鳇鳫鳁鳢鳫鲨鱞鲐0QFSBUPS
    w retry
    w replaceError
    w catch
    w 鱘鱳鱇鱤鲏ࢴ໘ෆ଍鱯ײ鱝鱑鱇鲐鱑ɺ鳢鳀鳡鲜鱴આ໌鱜鱤鱐鱨

    16/22

    View Slide

  17. ϑΟϧλϦϯά
    w ஋鲗ࣺ鱫鲐0QFSBUPS
    w 鱉鲒鱉鲒鱇鲐鱑ɺ.BSCMF%JBHSBN鱰鲍鲐ਤࣔ鱬鲀鲁఻鲔鲐鱴鱟
    17/22

    View Slide

  18. ෳ਺ͷ1VCMJTIFSΛ·ͱΊΔ
    w ෳ਺鱳1VCMJTIFS鲗鱷鱭鱩鱰鲃鱭鲆鲐0QFSBUPS
    w combineLatest
    w zip
    w marge
    18/22

    View Slide

  19. ॻ͔ͳ͔ͬͨ͜ͱɿଞͷ0QFSBUPS
    w ଞ鱰decodeflatMap鱇鱤鲏鲇େࣄ
    w decode鱴鱚鲀鱮೉鱜鱔鱯鱉鱳鱬লུ鱜鱤
    w flatMap鱴ٯ鱰આ໌鱑鱙鱦鲈鱩鱔鱳鱬ආ鱖鱤
    w Կ鱭鱐鱜鱤鱐鱨鱤鱭鱘鲒鱬鱴鱇鲐鱑ɾɾɾ
    19/22

    View Slide

  20. ॻ͔ͳ͔ͬͨ͜ͱɿඇಉظॲཧ
    w ඇಉظॲཧʢ鳅鲻鳀鳧鱅鲧௨৴鱯鱮ʣ
    w URLSession鱳1VCMJTIFS鲇େࣄ鱬鱴鱇鲐
    w 鱤鱥ɺࠓޙ鱴BTZODBXBJU鲗࢖鱋ํ޲鱰鱯鲐鱥鲒鱋
    20/22

    View Slide

  21. 4XJGU$PODVSSFODZͱ$PNCJOF
    w هࣄࣥච࣌఺鱬鱴4XJGU$PODVSSFODZ鱰৮鲑鲐鱳鱴ࠔ೉鱥鱨鱤
    w 4XJGU$PODVSSFODZ鱴ڧྗ鱬鱇鲏ࠓޙ鱳ओྲྀ
    w $PNCJOF鱴ඇಉظॲཧ鲉ฒྻॲཧ鲍鲏鲇ɺ鳈鲜鳫鲿鲛鳫鲨༻్
    21/22

    View Slide

  22. ײ૝ͳͲ͋Ε͹ฉ͔͍ͤͯͩ͘͞
    w $PNCJOF0QFSBUPS鲤鲜鳁
    w 1%' #005)

    w IUUQTUZQFEMBCCPPUIQNJUFNT
    w 鲭鳫鳏鳣鲫鱅鳁 (JU)VC

    w IUUQTHJUIVCDPNVTBNJL$PNCJOF0QFSBUPS(VJEF4BNQMF
    22/22

    View Slide