集まれ Kotlin 好き ! Kotlin 愛好会 vol 2 @ DeNA
+BWBͰॻ͔Εͨ"OESPJEΞϓϦΛ ,PUMJOͰॻ͖͢·Ͱͷू·Ε,PUMJO͖,PUMJOѪձWPM
View Slide
ٶԼཽେ$IBU8PSLגࣜձࣾΫϥΠΞϯτΞϓϦέʔγϣϯ։ൃ෦[email protected]͖ͳ,PUMJOͷػೳ4NBSU$BTU
$IBU8PSL
$IBU8PSL‣ Ϗδωε͚ͷνϟοταʔϏε 8FCJ04"OESPJEσεΫτοϓΞϓϦͰఏڙ "OESPJEΞϓϦ͔Β+BWB‣ ʙ·Ͱ5JUBOJVN +BWB4DSJQUͩͬͨ‣ +BWB൛͔Β։ൃΛ։࢝‣ ,PUMJOΛݕ౼͢ΔͨΊʹͷ,PUMJOษڧձʹࢀՃ‣ ࠾༻ڧԽத J04"OESPJE4DBMB1)143&ͳͲ ৄ͘͠8FCαΠτͰ‣ IUUQTDPSQDIBUXPSLDPNKBSFDSVJU‣ ؾʹͳΔ͜ͱ͕͋ͬͨΒ͔͚ͯԼ͍͞
,PUMJO
,PUMJO‣ (PPHMF*0Ͱ"OESPJEެࣜݴޠԽ ͦΕ·Ͱ,PUMJOͷ։ൃࣄྫଟ͋ͬͨ͘ ެࣜݴޠʹͳΔ͜ͱͰ҆৺ΛखʹೖΕͨ طଘͷΞϓϦͱͷ͖߹͍ํΛͲ͏͢Δ͔ʁ‣ ෦తʹಋೖPSશ໘తʹಋೖ ͜Εͱ͍ͬͨਖ਼ղͳ͍ ৽نϓϩδΣΫτͳΒ,PUMJOͰྑ͍ $IBU8PSLͰશ໘తͳಋೖΛܾఆͨ͠
Ͳ͔͜Β‣ ಋೖॳશ໘తͳಋೖ༧ఆͳ͔ͬͨ খ͞ͳμΠΞϩά͔ͭΒಋೖΛ։࢝‣ (PPHMF*0ͷཌ͔Βελʔτ ࣍ʹطଘͷը໘Λͭॻ͖͑ͯΈͨ ৽͍͠ػೳͷՃΛ,PUMJOͰॻ͍ͯΈͨ‣ +BWBͱͷͭͳ͗ࠐΈ͕ωοΫʹͳ͍ͬͯͬͨ ͔֬ʹ,PUMJO+BWBͱͷ࿈ܞόονϦͰ͖Δ ͏·͘࿈ܞ͢Δʹಛผͳҙ͚͕ࣝඞཁ‣ !+WN'JFME!+WN4UBUJD!+WN0WFSMPBET‣ SFUVSO6OJU*/45"/$&‣ 1MBUGPSN5ZQFT
!+WNʙΞϊςʔγϣϯ‣ +BWB͔ΒͷΞΫηεΛҙࣝ͢Δඞཁ͕͋Δclass MyFragment : Fragment() {companion object {@JvmFieldval TAG: String =MyFragment::class.java.simpleName}@JvmOverloadsfun logic(label: String = "") {}} ,PUMJO
SFUVSO6OJU*/45"/$&‣ ,PUMJOʹlWPJEzଘࡏ͠ͳ͍class BusinessLogic {fun async(callback: () -> Unit) {// Some async logiccallback();}}BusinessLogic logic = new BusinessLogic();logic.async(() -> {return Unit.INSTANCE;});,PUMJO+BWB
IUUQTEJTDVTTLPUMJOMBOHPSHUKBWBJOUFSPQVOJUDMPTVSFTSFRVJSFEUPSFUVSOLPUMJOVOJU!+WN7PJEͷఏҊʹಉ͡ఏى
1MBUGPSN5ZQFT‣ /PO/VMM͔/VMMBCMF͔એݴ͞Ε͍ͯͳ͍ܕ ܕใΛݟΔͱlzϚʔΫ͕͍͍ͯΔ‣ "OESPJE4%,جຊతʹ1MBUGPSN5ZQFT‣ !/PO/VMM!/VMMBCMF͕͍ͯͨΒϥοΩʔ
1MBUGPSN5ZQFT‣ "OESPJE4%,Ͱ͋ΕίʔυΛಡΜͰܕΛܾఆ͢Δval inflater: LayoutInflater =LayoutInflater.from(this) ,PUMJO
,PUMJOͷ͏·ຯΛҾ͖ग़͍ͨ͠‣ ,PUMJOΛ෦తʹಋೖ͢Δͱ+BWBʹӨڹ͕ग़Δ ٯʹ+BWBͷ࣮͕,PUMJOʹӨڹ͢Δ‣ +BWB0QUJPOBMWT,PUMJO/PO/VMM/VMMBCMF5ZQF ࣗୡ͕ॻ͍ͨ+BWBͷίʔυΛݟฦ͢‣ !/PO/VMM!/VMMBCMFΞϊςʔγϣϯΛ͚͍ͯ͘ʁ‣ ͍ͬͦͷ͜ͱ,PUMJOʹஔ͖͑ͨํ͕ྑ͍ͷͰͳ͍͔ʁ‣ ͭͣͭஸೡʹ,PUMJOԽΛਐΊ͍ͯ͘ ਓͷνʔϜͰ,PUMJOͷशख़όϥόϥ ૬ޓʹϨϏϡʔΛ͠ͳ͕ΒཧղΛਂΊ͍ͯ͘ 1VMM3FRVFTUʹ,PUMJOͷݴޠػೳͷઆ໌Λॻ͘
,PUMJOͷ͏·ຯΛҾ͖ग़͢ಓఔ(PPHMF*0b$IBU8PSL"OESPJE 7FSTJPO'VMM+BWB ߦ$IBU8PSL"OESPJE 7FSTJPO'VMM,PUMJO ߦԻ௨ "OESPJE ߦ
,PUMJOͷ͏·ຯΛҾ͖ग़ͨ݁͠Ռ‣ ϲ݄ͰશͯͷίʔυΛ,PUMJOԽͨ͠ ͦͷؒʹػೳՃϦϑΝΫλϦϯάͰ͖ͨ ,PUMJOԽલޙͰίʔυͷྔʹͳͬͨ‣ νʔϜͷਁಁͱޮՌ /VMM1PJOUFS&YDFQUJPOͷ໓‣ ΄΅ग़ձ͍ͬͯͳ͍‣ 1MBUGPSN5ZQFTͷऔΓѻ͍͕పఈ͞Εͨ‣ +BWBͷ0QUJPOBMΑΓऔΓѻָ͍͕ ίʔυͷՄಡੑͷ্‣ جຊWBMͰڱ͍ൣғͰWBSΛ͏ͳͲͷҙ͚ࣝ
,PUMJOͷ͏·ຯΛҾ͖ग़ͨ͢Ίʹ‣ ,PUMJOଆͷ࣮ݟͨํ͕ྑ͍ ྫ͑NBQˠUP-JTUͷྲྀΕ‣ +BWBͷ4USFBNΛͬͯΔͱ͍ͭΓͨ͘ͳΔ‣ ࣮ࡍNBQͷ࣌Ͱ-JTU3͕ಘΒΕΔval results: List = someCollection.map { it.convert() }.toList() ,PUMJO
,PUMJOͷ͏·ຯΛҾ͖ग़ͨ͢Ίʹ‣ 4IPX,PUMJO#ZUFDPEFˠ%FDPNQJMF͢Δval source = listOf(1, 2, 3, 4, 5)val results: List = source.map { it.toString(10) } ,PUMJOUP-JTUແUP-JTU༗
,PUMJOͷ͏·ຯΛҾ͖ग़͠ଛͶͨࣄྫ‣ ,PUMJOͱ"OESPJE +%,ͷ"1*͕ಉ໊͡લ‣ ਖ਼ղ൪ԼͷGPS&BDIͰͨ͠ʂ ൪ԼLPUMJODPMMFDUJPOTGPS&BDI‣ .BQͷ֦ுؔͱͯ͠ఆٛ͞Ε͍ͯΔ ্͔ΒͭΊKBWBVUJM.BQGPS&BDI‣ "OESPJEͰ͑ΔΑ͏ʹͳͬͨͷ-W͔Β‣ /P$MBTT%FG'PVOE&SSPS͕ൃੜͨ͠
࠷ޙʹ
࠷ޙʹ‣ طଘͷΞϓϦஈ֊తʹ,PUMJOԽ͍͚ͯ͠Δ ͨ +BWBͱͷ૬ޓӡ༻ੑͷߴ͞‣ த్ʹಋೖ͢Δ͙Β͍ͳΒશͯॻ͖͍͑ͨ +BWBͱ,PUMJOؒͰͦΕͧΕΛҙࣝ͢Δखؒ‣ ਓखͰؾΛ͚ͭͳ͍ͱ͍͚ͳ͍Օॴඞͣࣄނ͕ੜ·ΕΔ‣ ଞνʔϜ͔Βݟͨ৺ཧతোน͕Լ͕ͬͨ ෭࣍తͳޮՌ‣ J04νʔϜ͕,PUMJOͷίʔυΛಡΜͰ4XJGUʹҠ২‣ 4DBMB ؚ4DBMB+45ZQF4DSJQU͍༰қʹಡΊΔ
͓͠·͍