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

아마도 Effective 한 Kotlin

TaeHwan
September 07, 2020

아마도 Effective 한 Kotlin

드로이드 나이츠 발표 영상
- https://www.youtube.com/watch?v=tna95Q7bnNg

효과적인 Kotlin 사용을 위해 알아볼 내용
- 가독성을 위한
- Property
- Scope function
- Sequence
- Coroutines

블로그 글
https://thdev.tech

발표자료 내에 포함되어있는 링크
구글 자바 가이드 : https://google.github.io/styleguide/javaguide.html
안드로이드 AOSP 코드 컨벤션 : https://source.android.com/setup/contribute/code-style
안드로이드 코틀린 가이드 : https://developer.android.com/kotlin/style-guide

TaeHwan

September 07, 2020
Tweet

More Decks by TaeHwan

Other Decks in Technology

Transcript

  1. 1SPQFSUZࢎਊޙઁ੼ਸٜ݅যࠁ੗ QSJWBUFWBSOBNF-FOHUI*OU QSJWBUFWBSVTF/BNF#PPMFBOGBMTF SFUVSOJG VTF/BNFOPU \ WBMSFU@OBNFUBLF*G\JUOVMM^  OBNF-FOHUISFUMFOHUI VTF/BNFUSVF

    ^FMTF\ 6TFE DMBTT6TFS*OGP\ QSJWBUFWBS@OBNF4USJOH OVMM QSJWBUFWBSOBNF-FOHUI*OU QSJWBUFWBSVTF/BNF#PPMFBOGBMTF WBMOBNF4USJOH HFU \ SFUVSOJG VTF/BNFOPU \ WBMSFU@OBNFUBLF*G\JUOVMM^  OBNF-FOHUISFUMFOHUI VTF/BNFUSVF SFU ^FMTF\ 6TFE ^ ^ ^ Ӓېࢲખ؊ࠂ੟ೞѱޙઁ੼ਸٜ݅যࠁওणפ׮ OBNF੉ۄח1SPQFSUZীOBNF-FOHIU VTF/BNF੉ۄחчਸ୶о೧ࢲHFU/BNFਸೞݶয়ز੘ਸ୶о೧ࠁওणפ׮
  2. 1SPQFSUZࢎਊदܙ੉೙ਃೞ׮ ✓ 1SPQFSUZоಞೞ׮Ҋೞ૑݅ݽفоز੄ೞחߑߨਸޖदೞ૑ঋইঠೠ׮ ✓ &GGFDUJWF,PUMJO଼ਸӝળਵ۽ ✓ ࢚కܳաకմ׮߸ࣻ 1SPQFSUZ  ✓

    ೯زਸաఋմ׮ೣࣻ &GGFDUJWF,PUMJO଼ਸӝળਵ۽ח 1SPQFSUZח࢚కܳաకաب۾ҳࢿ೧ঠ೤פ׮ খীࢲ੘ࢿೠ௏٘ח߸ࣻоইצೣࣻ੄৉ೡਸೞҊ੓যҳ࠙੉೙ਃ೤פ׮
  3. 1SPQFSUZࢎਊदܙ੉೙ਃೞ׮ GVOHFU0OMZ0OF/BNF 4USJOH JG VTF/BNFOPU \ WBMSFU@OBNFUBLF*G\JUOVMM^  OBNF-FOHUISFUMFOHUI VTF/BNFUSVF

    SFU ^FMTF\ 6TFE ^ খীࢲ੘ࢿೠ1SPQFSUZOBNF੉ইצ ೣࣻ۽੉ܴࠗఠݺഛೞѱ੿੄ೞҊ ࢎਊೞب۾੿ܻೣ੉೙ਃ
  4. 4DPQF'VODUJPOࢎਊ ✓ SVOSFDFJWFSܳֈѹ઱ח҃਋ ✓ XJUIQBSBNFUFS۽ֈѹ઱ח҃਋ ✓ BQQMZSFDFJWFSܳֈѹ઱ח҃਋ ✓ BMTPSFDFJWFSܳֈѹ઱ח҃਋ ✓

    MFUSFDFJWFSܳֈѹ઱ח҃਋ ✓ UBLF*GSFDFJWFSܳֈѹ઱ח҃਋ ✓ UBLF6OMFTTSFDFJWFSܳֈѹ઱ח҃਋ 4DPQFGVODUJPO਷ઙܨо׮নೞҊ чਸযڃधਵ۽੹׳߉Ҋ যځೠч੉ܻఢؼ૑੿೧ઉ੓णפ׮
  5. 4DPQF'VODUJPO೦࢚જਸө EBUBDMBTT*NBHF3FTQPOTF  WBMJNBHF-JTU-JTU*NBHF*UFN3FTQPOTF  WBMOFYU#PPMFBO  EBUBDMBTT*NBHF*UFN3FTQPOTF  WBMJNBHF6SM4USJOH

     WBMJNBHF8JEUI*OU  WBMJNBHF)FJHIU*OU  WBMJNBHF5ZQF4USJOH  ࢲߡ۽ࠗఠ੹׳߉ח׮חо੿ਵ۽JNBHF-JTU৬OFYUী؀ೠ੿ࠁоನೣغয੓חؘ੉ఠܳೞաҳࢿ೮णפ׮ ੉ؘ੉ఠܳഝਊೡٸ4DPQFGVODUJPOਸࢎਊ೧ࠁ۰Ҋೞחؘযڃ੢ױ੼੉੓ח૑ঌইࠁભ
  6. 4DPQF'VODUJPO೦࢚જਸө GVOMPBE*NBHF \ JNBHF3FTQPOTFJNBHF-JTU MFU\ JUGPS&BDI\JNBHF JNBHFJNBHF6SM MFU\ JNBHFJNBHF5ZQF MFU\

    JNBHFJNBHF8JEUI MFU\ JNBHFJNBHF)FJHIU MFU\ *NBHF4UBUF  JNBHF6SMJNBHFJNBHF6SM  JNBHF5ZQFJNBHFJNBHF5ZQF  JNBHF8JEUIJNBHFJNBHF8JEUI  JNBHF)FJHIUJNBHFJNBHF)FJHIU   ^ ^ ^ ^ ^ ^ ^ 4DPQFGVODUJPOਸӓঈਵ۽ࢎਊ೧ࠌणפ׮ *G؀नOVMM୓௼ܳೞҊࢎਊೞӝए਍ MFU\^ਸࢎਊ೧ࠁওणפ׮ ݽٚч੉/PU/VMM੐ਸഛੋೞҊ࢜۽਍*NBHF4UBUFٜܳ݅ب۾୊ܻ೮णפ׮
  7. 4DPQF'VODUJPO೦࢚જਸө GVOMPBE*NBHF \ JNBHF3FTQPOTFJNBHF-JTU MFU\ JUGPS&BDI\JNBHF JG JNBHFJNBHF6SMOVMMJNBHFJNBHF5ZQFOVMMJNBHFJNBHF8JEUI OVMMJNBHFJNBHF)FJHIUOVMM \

    *NBHF4UBUF  JNBHF6SMJNBHFJNBHF6SM  JNBHF5ZQFJNBHFJNBHF5ZQF  JNBHF8JEUIJNBHFJNBHF8JEUI  JNBHF)FJHIUJNBHFJNBHF)FJHIU   ^ ^ ^ ^ ੉҃਋JGܳ੘ࢿೞҊ /PU/VMMੋчਸоઉয়חѱ؊ӭՔ೤פ׮ ௏٘оةࢿب֫ই૑૑ঋҊ ࢎਊࢿبڄয૑ח4DPQF'VODUJPOਸ੉҃਋Ҷ੉ࢎਊೞ૑ঋחಞ੉જભ
  8. 4DPQF'VODUJPO೦࢚જਸө WJFX.PEFMVQEBUF7JFX\ JUQMVT BBBBBB MFU\ UWSVO\ UFYUBCDEJU ^ ^ ^

    it੉ ࢤۚغয ੓׮ it੉ ࢤۚغয ੓׮ This scope ৈӝࢲ ݈ೞח it਷ য٣ੌө? ೠ઴ঀ׮दࠁݶ௏ౣܽ਷ۈ׮಴അীࢲ౵ۄݫఠоѐ੉ݶJUਵ۽؀୓ؾפ׮ ߣ૩઴੄JU਷VQEBUF7JFX੄JU੉Ҋ QMVT੉റMFU਷UWSVO\^উীࢲࢎਊೡJU੉غѷભ ࢎपૣ਷௏٘ۄࢲ߄۽੉೧ೡࣻ੓૑݅ ઺рী઴઴੉ࢎ੉ী੓׮ݶJU੉য٣ࢲࠗఠ৳ח૑ঌӝয۵Ҋ  য٣ࢲחMFU য٣ࢲחSVOਸࢎਊ೧ঠೞח૑ݺഛೞ૑ঋਸࣻ੓णפ׮
  9. 4DPQF'VODUJPOѾҴ ✓ ࢲ۽׮ܲ੉೧بо੓ਸࣻ੓׮ ✓ SVOMFUBQQMZBMTPܳ݃ҳॳѱغݶ੉ч੉য٣ীࢲ৳ח૑ঌࣻহ׮ ✓ ݽٚѤ੸׼൤ ੿ܻೞݶ 4DPQFGVODUJPO੸ਊೞחؘ੓যࢲ۽׮ܲ੉೧بоઓ੤ೡࣻ੓Ҋ 

    ݃ҳॳѱغݶ੉ч੉য٣ীࢲࠗఠ৳ח૑ঌӝоয۵ભ ѾҴݽٚѤ੸׼൤ ঌݏѱ ೙ਃೞ׮ݶ௏٘ஶ߮࣌ਸ੿੄ೞҊࢎਊೞחѦ୶ୌ೤פ׮
  10. 4FRVFODFഝਊೞӝ੹ী GVOUFTU \ WBMJUFNT*OU3BOHF WBMTVNJUFNT GJMUFS\ QSJOU 'JMUFSJU  ߣ۽Ӓ

    JU ^ NBQ\ QSJOU .BQJU  ߣ۽Ӓ JU  ^ TVN  QSJOUMO TVNTVN  ^ Filter1, Filter2, Filter3, Filter4, Filter5, Filter6, Filter7, Map6, Map7, sum 26 Ѿҗ 4FRVFODFഝਊೞӝ੹ীGJMUFS NBQਸഝਊ೧*OU3BOHFܳঌইࠇפ׮ ੉௏٘੄ز੘Ѿҗחয়ܲଃҗэणפ׮ 'JMUFSܳݢ੷׮ೞҊ NBQਸ੉য୊ܻ೤פ׮
  11. 4FRVFODFഝਊೞӝ੹ী !5FTU QVCMJDGJOBMWPJEUFTU \ CZUFWBS *OU3BOHFJUFNTOFX*OU3BOHF WBS   $PMMFDUJPOEFTUJOBUJPOJWJW

    $PMMFDUJPO OFX"SSBZ-JTU ࢜۽਍ஸۑࢶࢤࢿ ࢤۚ XIJMF WBSIBT/FYU \ JUFNJWJWWBSOFYU  JU /VNCFS JUFNJWJW JOU7BMVF  WBS'JMUFS JU   4ZTUFNPVUQSJOU WBS  JG JU \ࠁ׮௾҃਋BEE EFTUJOBUJPOJWJWBEE JUFNJWJW  ^ ^ ৈӝө૑оGJMUFSܳ୊ܻೠѾҗ ࢜۽਍$PMMFDUJPOਸࢤࢿೠ׮ EFTUJOBUJPOJWJW $PMMFDUJPO OFX"SSBZ-JTU $PMMFDUJPOT,UDPMMFDUJPO4J[F0S%FGBVMU UIJTNBQJW   NBQਸ୊ܻೠ׮ XIJMF WBSIBT/FYU \ JUFNJWJWWBSOFYU  JU /VNCFS JUFNJWJW JOU7BMVF  WBS.BQ JU   4ZTUFNPVUQSJOU WBS  *OUFHFSWBSJU ߓ୊ܻറ੷੢ EFTUJOBUJPOJWJWBEE WBS  ^ ஸ۩࣌੄чਸTVNೠ׮ JOUTVN$PMMFDUJPOT,UTVN0G*OU *UFSBCMF -JTU EFTUJOBUJPOJWJW  4USJOHWBSTVN TVN 4ZTUFNPVUQSJOUMO WBS  ^ ղࠗ௏٘ܳ࢓ಝࠁݶ੉ਬܳঌࣻ੓חؘ  ѐ੄XIJMFޙ੉ઓ੤ೣਸঌࣻ੓णפ׮ ୐ߣ૩חGJMUFS فߣ૩חNBQ੄ؘ੉ఠܳ୊ܻ೤פ׮ ࢎ੉ࢎ੉࢜۽਍$PMMFDUJPOਸ݅٘חѪبഛੋೡࣻ੓णפ׮
  12. 4FRVFODFഝਊೞӝ੹ী GVOUFTU \ WBMTVNJUFNT BT4FRVFODF  GJMUFS\ QSJOU 'JMUFSJU 

     JU ^ NBQ\ QSJOU .BQJU   JU  ^ TVN  ^ // ӝઓ Iterator Filter1, Filter2, Filter3, Filter4, Filter5, Filter6, Filter7, Map6, Map7, sum 26 // sequence Filter1, Filter2, Filter3, Filter4, Filter5, Filter6, Map6, Filter7, Map7, sum 26 Ѿҗ ੉ߣূBT4FRVFODFܳ୶оೞৈѾҗܳ࢓ಝࠁݶ 'JMUFS .BQ੉ࢎ੉ࢎ੉ՙয੓਺ਸঌࣻ੓णפ׮ द௫झоহח҃਋חೞաೞա୊ܻೞ૑݅ BT4FRVFODFܳ୶оೣਵ۽ॄࣽର୊ܻೣਸঌࣻ੓ભ
  13. 4FRVFODFഝਊೞӝ ✓ ؀ਊ۝੄ؘ੉ఠ୊ܻदࢤӡࣻ੓ח୶о-JTUࢤࢿਸߑ૑ೡࣻ੓׮ ✓ ইې੄௏٘৬ਬࢎೠز੘ਸೠ׮ WBSTVN JUFNTGPS&BDI\ QSJOU 'JMUFSJU 

     JG JU \ QSJOU .BQJU   TVNJU  ^ ^ ੉҃਋؀ਊ۝ؘ੉ఠ୊ܻदࢤӡࣻ੓ח୶о-JTUࢤࢿਸߑ૑ೡࣻ੓Ҋ  ࠁాGPSޙೞա۽JGܳ੉ਊ೧୊ܻೞח௏٘৬ਬࢎೠߑߨ੄Ѿҗܳࠅࣻ੓णפ׮
  14. 4FRVFODFоԙજ਷Ѥইפ׮ ✓ ױࣽೠؘ੉ఠܳ4FRVFODFೠ׮Ҋࢿמ੉જই૑חѤইפ׮ ✓ JOMJOFೣࣻ۽಴അغחNBQ GJMUFS١ਸഝਊೞחѱয়൤۰ࢿמ੉જਸࣻ੓׮ ✓ ؘ੉ఠ઺ࠂઁѢ ೙ఠ୊ܻ١ؘ੉ఠоҕ੉݆਷҃਋4FRVFODFоب਑ؼࣻ੓׮ ✓

    ݒߣ࢜۽਍MJTUܳ݅٘חؘٜযоח࠺ਊ੉௼׮ݶ4FRVFODFоજਸࣻ੓׮ Ӓۧ׮Ҋ೦࢚4FRVFODFоજ਷ࢿמਸղחѪ਷ইתפ׮ খীࢲ੘ࢿ೮؍ࢠ೒௏٘ܳӝળਵ۽BT4FRVFODFоয়൤۰؊וܽѾҗܳоઉ৳Ҋ  JOMJOFਸೞחGJMUFSNBQ੄Ѿҗоয়൤۰؊જ਷Ѿҗܳоઉ৳णפ׮ ݒߣ࢜۽਍ܻझ౟ܳ݅٘חؘٜযоח࠺ਊਸ઴੉Ҋर׮ݶBT4FRVFODFоബਯ੸ੌࣻ੓Ҋ ࢿמ୓௼റࢎਊೞदӡj
  15. $PSPVUJOFTഝਊ ✓ SVO#MPDLJOH ✓ SVO#MPDLJOHਸز੘दఃݶ#MPDLJOHदఃҊ׮਺੘সਸ୊ܻೠ׮ ✓ ੘স੉՘աݶز੘दఅࠗ࠙੄#MPDLJOHਸ೧ઁೞҊجইр׮ ✓ (MPCBM4DPQF ✓

    জز੘рױೞա੄4DPQFਸഝਊೠ׮ ✓ ױೞա੄4DPQFਸഝਊೞ׮ࠁפ-JGFDZDMFਸ୊ܻೞӝয۵׮ ✓ $PSPVUJOF4DPQF ✓ -JGFDZDMFਸ୊ܻೞӝऔҊ ࢤࢿҗزदীࢎਊ੉оמೞ׮ উ٘۽੉٘ীࢲഝਊೡѪ੉פ-JGFDZDMFਸੜ૑ఃب۾ѐߊ೧ঠೠ׮ ,PUMJOޙࢲীࠁݶSVO#MPDLJOHਸݒ਋ൔೞѱࠅࣻ੓णפ׮ ӒܻҊࢤпࠁ׮݆਷Ӗҗࢠ೒ীࢲ(MPCBM4DPQFਸൔೞѱࢎਊೞח҃਋о੓חؘ ੉חݽف"OESPJEജ҃җחݏ૑ঋणפ׮ "OESPJEীࢲח-JGFDZDMFਸੜ૑ெѐߊਸ೧ঠ೧$PSPVUJOF4DPQFਸഝਊ೧ঠ೤פ׮ (MPCBM4DPQFҗSVO#MPDLJOH੉যځೠޙઁо੓ח૑ೞաೞա࢓ಝࠁѷणפ׮
  16. SVO#MPDLJOHࢎਊदޙઁ੼ ✓ 6*ীࢲSVO#MPDLJOHਸഐ୹ೞݶ6*झா઴۞ܳ#MPDLJOHೞҊز੘ೠ׮ ✓ 6*оݥ୸࢚క۽*0ٚ.BJOٚ੘সਸೞҊ 6*ܳഝࢿചೠ׮ ✓ ੉दр੉ӡয૑ݶ"/3 "QQMJDBUJPO/PU3FTQPOEJOH ੉ߊࢤೠ׮

    ✓ 3FBTPO*OQVUEJTQBUDIJOHUJNFEPVU 8BJUJOHUPTFOEOPOLFZFWFOU CFDBVTFUIFUPVDIFEXJOEPXIBTOPUGJOJTIFEQSPDFTTJOHDFSUBJOJOQVU FWFOUTUIBUXFSFEFMJWFSFEUPJUPWFSNTBHP8BJURVFVFMFOHUI 8BJURVFVFIFBEBHFNT 
 1BSFOUDPNFYBNQMFNZBQQMJDBUJPO.BJO"DUJWJUZ ✓ ѾҴSVO#MPDLJOHਸࢎਊೞ૑ঋইঠೠ׮ উ٘۽੉٘.BJO5ISFBEח6*झா઴۞ੑפ׮SVO#MPDLJOH਷੉੹੄झா઴۞ܳӒ؀۽ࢎਊ೤פ׮ 6*झா઴۞ীࢲ௏٘੘ࢿೞݶ׼োೞѱب6*ীࢲ#MPDLJOHೞҊز੘೤פ׮ SVO#MPDLJOHউীࢲز੘ೞח௏٘о*0ٚ6*࢚ٚҙহणפ׮ੌױ#MPDLJOHറز੘೤פ׮
  17. SVO#MPDLJOHࢎਊदޙઁ੼ ✓ 6*ীࢲSVO#MPDLJOHਸഐ୹ೞݶ6*झா઴۞ܳ#MPDLJOHೞҊز੘ೠ׮ ✓ 6*оݥ୸࢚క۽*0ٚ.BJOٚ੘সਸೞҊ 6*ܳഝࢿചೠ׮ ✓ ੉दр੉ӡয૑ݶ"/3 "QQMJDBUJPO/PU3FTQPOEJOH ੉ߊࢤೠ׮

    ✓ 3FBTPO*OQVUEJTQBUDIJOHUJNFEPVU 8BJUJOHUPTFOEOPOLFZFWFOU CFDBVTFUIFUPVDIFEXJOEPXIBTOPUGJOJTIFEQSPDFTTJOHDFSUBJOJOQVU FWFOUTUIBUXFSFEFMJWFSFEUPJUPWFSNTBHP8BJURVFVFMFOHUI 8BJURVFVFIFBEBHFNT 
 1BSFOUDPNFYBNQMFNZBQQMJDBUJPO.BJO"DUJWJUZ ✓ ѾҴSVO#MPDLJOHਸࢎਊೞ૑ঋইঠೠ׮ Ӓۧ׮Ҋ*0ਤীࢲز੘ೞפޙઁহ׮Ҋࢤпೞ؊ۄب ղࠗ੸ਵ۽(MPCBM4DPQFਸഝਊ೤פ׮ -JGFDZDMFਸੜҙܻೞৈѐߊоמೞ׮ݶjࢎਊೞࣁਃ ׮݅ ׮਺ীঌইࠅ(MPCBM4DPQFਸঌইࠄ׮ݶॳ૑ঋইঠೡ੉ਬחೞա؊୶оؾפ׮
  18. (MPCBM4DPQFഝਊ GVOMPBE(MPCBM (MPCBM4DPQFMBVODI\ BOESPJEVUJM-PHX 5&.1 5ISFBE\5ISFBEDVSSFOU5ISFBE ^  DPVOU 

    EFMBZ   MBVODI %JTQBUDIFST.BJO \ VQEBUF7JFX DPVOUDPVOU5ISFBE\5ISFBEDVSSFOU5ISFBE ^  ^ ^ (MPCBM4DPQFਸഝਊೞӝਤೠࢠ೒ੑפ׮
  19. (MPCBM4DPQFࢎਊदޙઁ੼ ✓ (MPCBM4DPQF਷জز੘઺ೞա݅ࢤࢿغחयӖహ PCKFDUDMBTT  ✓ (MPCBM4DPQF਷ചݶױਤ۽ز੘೧ঠೞח"OESPJE৬חݏ૑חঋ਺ ✓ -JGFDZDMFਸ୊ܻೞӝਤ೧ࢲ߹بҙܻ੘সਸ೧ঠೠ׮ ✓

    ചݶױਤ۽$PSPVUJOF4DPQFਸഝਊೞחಞ੉ҙܻೞӝ؊औ׮ ✓ য়ܨ୊ܻח$PSPVUJOF4DPQFҗزੌೞ׮ ✓ 4VQFSWJTJPS+PC  $PSPVUJOF&YDFQUJPO)BOEMFSਸMBVODIীࢎਊ ✓ ୡӝ$POUFYUо&NQUZ$PSPVUJOF$POUFYU۽೦࢚ୡӝചغয੓׮ ✓ DPOUFYU߸҃਷MBVODI۽୊ܻ ✓ OFX$PSPVUJOF$POUFYUܳ੉ਊೞৈ߸҃ (MPCBM4DPQF਷$PSPVUJOF4DPQFਸ࢚ࣘ߉חयӖహੑפ׮ $PSPUVJOF4DPQFਸ૒੽ٜ݅যࢎਊೞ૑ঋח؀ࠗ࠙੄௏٘ীࢲ(MPCBM4DPQਸOFX$PSPVUJOF$POUFYUܳࢤࢿ೧ࢎਊ೤פ׮ यӖహ੉ۄח݈਷জ੉ز੘ೞח୊਺ࠗఠ՘ө૑৔ೱਸ޷஖ݴ ੜޅ׮ܖݶݫݽܻܼ੄ߊࢤبоמೞҊ জ੄ઙܐبੌযզࣻ੓णפ׮
  20. (MPCBM4DPQFয়ܨ୊ܻח GVOMPBE(MPCBM (MPCBM4DPQFMBVODI FYDFQUJPO 4VQFSWJTPS+PC \ ࢤۚ (MPCBM4DPQFMBVODI\ ࢤۚ ^

    UISPX&YDFQUJPO &SSPS  ࢤۚ ^ QSJWBUFWBMFYDFQUJPO$PSPVUJOF&YDFQUJPO)BOEMFS\DPSPVUJOF$POUFYU UISPXBCMF ৈӝࢲ৘৻୊ܻ ^ р഑ਤ௏٘୊ٜۢ݅যࢲॳݶজ੄ز੘ী৔ೱਸ޷஖૑ঋਸөࢤпೡࣻ੓णפ׮ ೞ૑݅੉௏٘ח୽࠙൤पࣻೡࣻ੓णפ׮־ҵо־ۅೡࣻ੓ਵפ ࢎਊೞ૑ঋחѱજѷणפ׮
  21. ""$7JFX.PEFM$PSPVUJOF4DPQFഝਊ GVOMPBE7JFX.PEFM4DPQF WJFX.PEFM4DPQFMBVODI FYDFQUJPO \ BOESPJEVUJM-PHX 5&.1 5ISFBE\5ISFBEDVSSFOU5ISFBE ^ 

    DPVOU  MBVODI\ EFMBZ   VQEBUF7JFX DPVOUDPVOU5ISFBE\5ISFBEDVSSFOU5ISFBE ^  ^ MBVODI\ EFMBZ   UISPX&YDFQUJPO &SSPS  ^ BOESPJEVUJM-PHF 5&.1 EFMBZ  VQEBUF7JFX DPVOUDPVOU5ISFBE\5ISFBEDVSSFOU5ISFBE ^  ^ QSJWBUFWBMFYDFQUJPO$PSPVUJOF&YDFQUJPO)BOEMFS\DPSPVUJOF$POUFYU UISPXBCMF ৈӝࢲ৘৻୊ܻ ^
  22. ""$7JFX.PEFMഝਊղࠗ௏٘ WBM7JFX.PEFMWJFX.PEFM4DPQF$PSPVUJOF4DPQF HFU \ WBMTDPQF$PSPVUJOF4DPQF UIJTHFU5BH +0#@,&:  JG TDPQFOVMM

    \ SFUVSOTDPQF ^ SFUVSOTFU5BH*G"CTFOU +0#@,&:  $MPTFBCMF$PSPVUJOF4DPQF 4VQFSWJTPS+PC  %JTQBUDIFST.BJOJNNFEJBUF  ^ JOUFSOBMDMBTT$MPTFBCMF$PSPVUJOF4DPQF DPOUFYU$PSPVUJOF$POUFYU $MPTFBCMF $PSPVUJOF4DPQF\ PWFSSJEFWBMDPSPVUJOF$POUFYU$PSPVUJOF$POUFYUDPOUFYU PWFSSJEFGVODMPTF \ DPSPVUJOF$POUFYUDBODFM  ^ ^ 7JFX.PEFM4DPQF਷ղࠗী੉৬э਷௏٘ܳ׸Ҋ੓णפ׮ 4VQFSWJTPS+PCਸୡӝചೞҊ੓য DIJME੄੘স੄&YDFQUJPO੉1BSFOUী৔ೱਸ޷஖૑ঋҊ  %JTQBUDIFST.BJOझா઴۞ܳࢎਊೞҊ੓णפ׮
  23. $PSPVUJOF3FUSPGJUഝਊীࢲ GVOMPBE%BUB WJFX.PEFM4DPQFMBVODI\ XJUI$POUFYU %JTQBUDIFST*0 \ MPBESFUSPGJUEBUB ^ ^ GVOMPBE%BUB

    WJFX.PEFM4DPQFMBVODI\ MPBESFUSPGJUEBUB ^ ✓ XJUI$POUFYUоࢎपࠛ೙ਃೞ׮ ✓ 3FUSPGJUղࠗীࢲ*0झா઴۞ܳ੸ਊغয੓য ইې୊ۢ੘স೧بޙઁহ׮ 3FUSPGJUഝਊदীחXJUI$POUFYU۽*0झா઴۞ܳࢎਊೡ೙ਃоহणפ׮ ੉޷3FUSPGJUীࢲ*0झா઴۞ܳࠁ੢೧઱Ҋ੓णפ׮ ݅ড*0о೙ਃೠ҃਋ۄݶղࠗীࢲ۽ஸநदܳࢤࢿೞѢա ؘ੉ఠ୊ܻীࠗ׸੉غחࠗ࠙੉ߊࢤೞח҃਋ࢎਊೞࣁਃ ৘ (40/ஶߡ౴ਸ૒੽ೠ׮ ۽ஸநदܳ݅ٚ׮١
  24. %BUBDMBTT ✓ FRVBMT IBTI$PEF  ✓ UP4USJOH ઁҕ ✓ DPNQPOFOU/

    ೣࣻઁҕਵ۽ࢶ঱ࣽࢲ؀۽чਸDPNQPOFOU/ਵ۽ࢎਊоמ ✓ DPQZ ೣࣻܳઁҕೠ׮ ߊ಴ীחহחղਊ EBUBDMBTTחFRVBMT৬IBTI$PEF DPNQPOFOU/ DPQZܳ੗زਵ۽ٜ݅যસפ׮ IUUQTUIEFWUFDILPUMJOLPUMJO@FGGFDUJWF@
  25. FRVBMT৬IBTI$PEF ✓ +BWB0CKFDUݺࣁীٮܲFRVBMTIBTI$PEF੿੄ ✓ $MBTTীFRVBMTܳ੿੄೮׮ݶ ߈٘दIBTI$PEFب੤੿੄೧ঠೠ׮ ✓ ѐё୓੄FRVBMTоزੌೞ׮ݶ߈٘दAIBTI$PEFAبزੌೠч੉ܻఢغযঠ ೠ׮ ✓

    ੉۠ઑѤਸ૑ః૑ঋਸ҃਋)BTI.BQ )BTI4FU١੄ஸ۩࣌ࢎਊदޙઁоࢤӡ ࣻ੓׮ ߊ಴ীחহחղਊ +BWB0CKFDUݺࣁীٮۄFRVBMTIBTI$PEF੿੄ח੉ղਊҗэભ IUUQTUIEFWUFDILPUMJOLPUMJO@FGGFDUJWF@
  26. FRVBMT৬IBTI$PEF૒੽ҳഅद EBUBDMBTT4PNFUIJOH3FTQPOTF  WBMOBNF4USJOH  WBMBHF*OU \ PWFSSJEFGVOIBTI$PEF *OU\ SFUVSO

    OBNF IBTI$PEF     BHF   ^ PWFSSJEFGVOFRVBMT PUIFS"OZ #PPMFBO\ SFUVSOJG UIJTPUIFS \ JG PUIFSJT4PNFUIJOH3FTQPOTF \ WBM OBNF BHF PUIFS SFUVSO*OUSJOTJDTBSF&RVBM OBNF BHF  ^ GBMTF ^FMTF\ USVF ^ ^ ^ ߊ಴ীחহחղਊ ૒੽IBTI$PEF FRVBMTܳҳഅೠ׮ݶਤ௏٘৬эणפ׮ IUUQTUIEFWUFDILPUMJOLPUMJO@FGGFDUJWF@
  27. FRVBMT৬ݫݽܻ࠺Үߑߨ ✓ +BWBחইې৬э੉࠺Үೠ׮ ✓ FRVBMTч੉زੌೠ૑୓௼ೠ׮ ✓ ݫݽܻ࢚زੌೠё୓ੋ૑୓௼ೠ׮ ✓ LPUMJOחইې৬э੉࠺Үೠ׮ ✓

    ч੉زੌೠ૑୓௼ೠ׮ ✓ ݫݽܻ࢚زੌೠ૑୓௼ೠ׮ ߊ಴ীחহחղਊ FRVBMT৬ݫݽܻ࠺Үח ਸࢎਊ೤פ׮ IUUQTUIEFWUFDILPUMJOLPUMJO@FGGFDUJWF@
  28. FRVBMT৬ݫݽܻ࠺Үߑߨ GVOTUSJOH.FNPSZ \ WBMTPNFUIJOH*UFN0OF4PNFUIJOH3FTQPOTF  OBNFOBNF  BHF  JT4FMFDUFEGBMTF

      WBMTPNFUIJOH*UFN5XP4PNFUIJOH3FTQPOTF  OBNFOBNF  BHF  JT4FMFDUFEGBMTF   QSJOUMO TPNFUIJOH*UFN0OFTPNFUIJOH*UFN5XP\TPNFUIJOH*UFN0OFTPNFUIJOH*UFN5XP^  QSJOUMO TPNFUIJOH*UFN0OFTPNFUIJOH*UFN5XP\TPNFUIJOH*UFN0OFTPNFUIJOH*UFN5XP^  QSJOUMO TPNFUIJOH*UFN0OFIBTI$PEF\TPNFUIJOH*UFN0OFIBTI$PEF ^  QSJOUMO TPNFUIJOH*UFN5XPIBTI$PEF\TPNFUIJOH*UFN5XPIBTI$PEF ^  ^ somethingItemOne == somethingItemTwo true somethingItemOne === somethingItemTwo false somethingItemOne hashCode -1052833319 somethingItemTwo hashCode -1052833319 Ѿҗ ߊ಴ীחহחղਊ LPUMJO੄EBUBDMBTTܳഝਊೣਵ۽ॄਤ৬э਷Ѿҗܳ঳ਸࣻ੓णפ׮ IUUQTUIEFWUFDILPUMJOLPUMJO@FGGFDUJWF@
  29. %JGG6UJMীࢲഝਊೠ׮ݶ QSJWBUFDMBTT%JGG  QSJWBUFWBMPME*UFNT-JTU4FMFDU*UFN  QSJWBUFWBMOFX*UFNT-JTU4FMFDU*UFN %JGG6UJM$BMMCBDL \ PWFSSJEFGVOHFU0ME-JTU4J[F *OU

    PME*UFNTTJ[F PWFSSJEFGVOHFU/FX-JTU4J[F *OU OFX*UFNTTJ[F PWFSSJEFGVOBSF*UFNT5IF4BNF PME*UFN1PTJUJPO*OU OFX*UFN1PTJUJPO*OU  #PPMFBO\ WBMPME*UFNPME*UFNT<PME*UFN1PTJUJPO> WBMOFX*UFNOFX*UFNT<OFX*UFN1PTJUJPO> SFUVSOPME*UFNOFX*UFN ^ PWFSSJEFGVOBSF$POUFOUT5IF4BNF PME*UFN1PTJUJPO*OU OFX*UFN1PTJUJPO*OU  #PPMFBO\ WBMPME*UFNPME*UFNT<PME*UFN1PTJUJPO> WBMOFX*UFNOFX*UFNT<OFX*UFN1PTJUJPO> SFUVSOPME*UFNOFX*UFN ^ ^ ߊ಴ীחহחղਊ ੉௏٘੄Ѿҗחӯ߅ѢܻחѾҗܳࠅࣻ੓णפ׮੗ࣁೠղਊ਷ইې࠶۽Ӓܳా೧ഛੋೞࣁਃ IUUQTUIEFWUFDILPUMJOLPUMJO@FGGFDUJWF@
  30. %JGG6UJMীࢲഝਊೠ׮ݶ QSJWBUFDMBTT%JGG  QSJWBUFWBMPME*UFNT-JTU4FMFDU*UFN  QSJWBUFWBMOFX*UFNT-JTU4FMFDU*UFN %JGG6UJM$BMMCBDL \ PWFSSJEFGVOHFU0ME-JTU4J[F *OU

    PME*UFNTTJ[F PWFSSJEFGVOHFU/FX-JTU4J[F *OU OFX*UFNTTJ[F PWFSSJEFGVOBSF*UFNT5IF4BNF PME*UFN1PTJUJPO*OU OFX*UFN1PTJUJPO*OU  #PPMFBO\ WBMPME*UFNPME*UFNT<PME*UFN1PTJUJPO> WBMOFX*UFNOFX*UFNT<OFX*UFN1PTJUJPO> SFUVSOPME*UFNUJUMFOFX*UFNUJUMF ^ PWFSSJEFGVOBSF$POUFOUT5IF4BNF PME*UFN1PTJUJPO*OU OFX*UFN1PTJUJPO*OU  #PPMFBO\ WBMPME*UFNPME*UFNT<PME*UFN1PTJUJPO> WBMOFX*UFNOFX*UFNT<OFX*UFN1PTJUJPO> SFUVSOPME*UFNOFX*UFN ^ ^ ߊ಴ীחহחղਊ ੉௏٘חখীࢲӯ߅Ѣܻ؍ࠗ࠙ਸࣻ੿ೞ৓णפ׮੗ࣁೠղਊ਷ইې࠶۽Ӓܳా೧ഛੋೞࣁਃ IUUQTUIEFWUFDILPUMJOLPUMJO@FGGFDUJWF@
  31. JOMJOFഝਊೞӝ JOMJOFGVOMPBE%BUB  MPBE$BDIF#PPMFBO  OPJOMJOFPO-PBEFE 6OJU  DSPTTJOMJOFPO$BDIF 6OJU

    \ JG MPBE$BDIFOPU \ SVO/FUXPSL POMJOF PO-PBEFE  ^FMTF\ SVO/FUXPSL MPDBM  \ PO-PBEFE  DBDIF PO$BDIF  ^ ^ ^ GVOSVO/FUXPSL VSM4USJOH DBMMCBDL 6OJU \  ^ inlineਵ۽ ੊ݺ ೣࣻ ࢤࢿ ࠺ਊਸ ઴ੋ׮ inline੉ ইצ ೣࣻ ഐ୹ী ࢎਊೞӝ ਤ೧ noinline ഝਊ lambdas ध ಴അ উীࢲ ࢎਊೞӝ ਤ೧ crossinline ഝਊ ߊ಴ীחহחղਊ ࢠ೒௏٘ܳా೧JOMJOFҗDMPTFJOMJOF OPJOMJOF੄ഝਊبܳࠅࣻ੓णפ׮
  32. JOMJOFഝਊೞӝ ✓ *OMJOF੿੄۽੊ݺೣࣻࢤࢿ࠺ਊਸ઴ੌࣻ੓যബਯࢿ੉֫ই૓׮ ✓ Ӓۢੌ߈ೣࣻীࢲبബҗܳࠅࣻ੓ਸө  ✓ ੌ߈ೣٜࣻ਷+7.௏٘प೯࠙ࢳਸా೧о੢੉੊੉غחߑߨਵ۽JOMJOFೠ׮ Ӓۡࣻبইקࣻب੓׮ "OESPJETUVEJPীࢲ੸ਊदڰח҃Ҋݫद૑

    &YQFDUFEQFSGPSNBODFJNQBDUGSPNJOMJOJOHJTJOTJHOJGJDBOU *OMJOJOHXPSLTCFTUGPSGVODUJPOTXJUIQBSBNFUFSTPGGVODUJPOBMUZQFT ߊ಴ীחহחղਊ ԙJOMJOF੉೙ਃೠѪ਷ইתפ׮ +7.ীࢲ௏٘࠙ࢳਸా೧ബਯ੸ੋߑߨਵ۽JOMJOFਸ೧઱ӝٸޙীԙJOMJOFਸೡ೙ਃחহਵݴ ੜҳ࠙ೞৈࢎਊೞदӡ