ããã«ã¡ã¯ãHabrïŒ è¿ãå°æ¥ãKotlinã«å°çããããšèããŠããŸãã 圌ãã¯ãã®èšäºïŒ2æïŒãééã§ããŸããã§ããã
èªãã§ã³ã¡ã³ãïŒ
ãã«ãŒã¹ã»ãã€ãã®æ¬ã
7é±éã®7ã€ã®èšèª ããèªã¿çµãããšããã§ãã ç§ã¯ãã®æ¬ã§èª¬æãããŠããã»ãšãã©ã®èšèªãæ±ã£ãçµéšããããŸãããèè
ãã©ã®ããã«èšèªãç¹åŸŽã¥ãããããã®ç¹æ§ãèšèªã®å®éã®äœ¿çšã«æçµçã«åœ±é¿ãããããšãŠãæ°ã«å
¥ããŸããã
ãã®ããããã®æ¬ã®ããã«å¥ã®ç« ãæžãããšã«ããŸããã ç§ãååã«ç¥ã£ãŠããèšèªã«å°å¿µãããã®é·æãšçæãçè§£ããŠããŸããããã¯ã³ããªã³ã§ãã
ãã®èšäºã®ç®çã¯ãKotlinèšèªãæããããšã§ã¯ãªãããã®ç¹æ§ã瀺ãããšã§ãã 圌女ã培åºçã«çè§£ããããšããªãã§ãã ããã ããã§èª¬æããæ©èœãããã°ã©ãã³ã°ã¹ã¿ã€ã«ã«ã©ã®ããã«åœ±é¿ãããã«ã€ããŠã泚æãæã£ãŠãã ãããKotlinã®å
žåçãªæ©èœã¯ããã®èšèªãæ¬è³ªçã«ãä»ã®ããã°ã©ãã³ã°èšèªã§ãŸã ééããŠããªããã®ãå°å
¥ããªãããšã§ãã å®éãKotlinã¯ãããã®å€ãçºèŠããã¹ãŠæãååºããæ¹æ³ã§äœ¿çšããŠããŸãã ã¢ã€ã¢ã³ãã³ã®ã¹ãŒããŒããŒããŒãæãåºããŠãã ããã ãããŒã»ã¹ã¿ãŒã¯ã¯ãæãåçŽãªé»åéšåããã¢ã€ã¢ã³ãã³ãçµã¿ç«ãŠãŸããã ã¢ã€ã¢ã³ãã³ã«ã¯ãã¹ãŒããŒãã³ããã©ãã·ã¥ã®ãããªç¹åŸŽçãªè¶
倧åœã¯ãããŸããã ããã¯åŒ±ç¹ã®ããã«èŠãããããããŸããããé·æçã«ã¯ããã¯å€§ããªå©ç¹ã§ãã 以äžã§ããã«ã€ããŠèª¬æããŸãããä»ã®ãšããã¯åºæ¬ããå§ããŸãããã

åºæ¬
Kotlinã¯ãIDEA IntelliJãAndroid StudioãŸãã¯CLionïŒKotlin / NativeïŒãªã©ã®1ã€ãŸãã¯å¥ã®IDEã§ã®ããã°ã©ãã³ã°ãç®çãšããŠããŸãã ããã§ã¯ãã³ãã³ãã©ã€ã³ããå§ããŠãããã·ã³ãã«ãªã³ã³ããã¹ãã§Kotlinããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŸãã
Kotlinãã€ã³ã¹ããŒã«ããã ãæ¬¡ã®ããã«REPLïŒã€ã³ã¿ã©ã¯ãã£ãã·ã§ã«ïŒãå®è¡ããŸãã

æ°åã詊ããŠã¿ãŸãããïŒ
>>> 1 1 >>> 1 + 2 3 >>> 1.0 + 2 3.0
ç°¡åãªæ°åŠãæ©èœããŸãã ããã¯ãJavaä»®æ³ãã·ã³ã§å®è¡ãããKotlin / JVMã§ãã Javaã®æŽæ°ã¯ããªããã£ãã§ãã ãããŠãã³ããªã³ã§ïŒ çªå·ã®ã¿ã€ãã確èªããŸãããïŒ
>>> 1::class class kotlin.Int >>> 1.0::class class kotlin.Double
äž¡æ¹ãšããªããžã§ã¯ãã§ãïŒ äžè¬çã«ãKotlinã§ã¯ãã¹ãŠã®ãšã³ãã£ãã£ã¯ãªããžã§ã¯ãã§ãã javaã¯ã©ãã§ããïŒ Kotlinã¯Javaãšå®å
šã«çžäºéçšå¯èœã§ãããäžèšã®åã¯Kotlinåã§ããããšãããããŸãã å®éãäžéšã®Kotlinçµã¿èŸŒã¿åã¯Javaåãã«ããŒããŠããŸãã ãã®å Žåã
Class
ã®
java
ããããã£ãŸãã¯ä»»æã®ãªããžã§ã¯ãã®
javaClass
ããããã£ã䜿çšããŠãJavaã¿ã€ããã©ã®ããã«ãªããã確èªã§ããŸãã
>>> 1.0::class.java double >>> 1.0.javaClass double
ããã¯
double
ã§ãïŒ Javaã®äºéæ°ã¯ããªããã£ãã§ãã ããã¯ã©ã®ããã«å¯èœã§ããïŒ Kotlinã¯ããªããžã§ã¯ãæåæ©èœã䜿çšãããŠããªãå Žåã«ãªããžã§ã¯ãã®ä»£ããã«ããªããã£ãã䜿çšã§ããæé©åãæ¡çšããŠããŸãã ããã¯å
éšã§è¡ãããéçºè
ã«ã¯ãŸã£ããé¢ä¿ãããŸããã ãªããžã§ã¯ããšããŠ
double
ã䜿çšããå¿
èŠãããå Žåã¯ã代ããã«
Double
ã䜿çšãããŸãã éçºè
ã®èгç¹ããã¯ãããã¹ãŠããªããžã§ã¯ãã§ããããšèšãããšãã§ããŸãã ããã€ãã®ããããã£ãå®çŸ©ããŸãã
>>> val a = 1
ãã®ããããã£ã¯èªã¿åãå°çšã§ãã
var
ã䜿çšããŠèªã¿åãããã³æžã蟌ã¿çšã®ããããã£ãå®çŸ©ããããšãã§ããŸãã
>>> var a = 1
泚ïŒã¿ã€ãã¯ããã§ã¯æå®ãããŠããŸããã ãã ããããã«ã ãŸãããŠã¯ãããŸãããKotlinã¯åŒ·åãªéçåä»ããåããèšèªã§ãã ããããã£ã®ã¿ã€ãã¯ãå²ãåœãŠãããå€ã®ã¿ã€ãããåçŽã«æšæž¬ãããŸãã
>>> ::a.returnType kotlin.Int
ååãªèšç®ãã§ããããããã«è峿·±ãæ©èœã«ç§»ããŸãããã
å®å
šæ§
ã¢ã€ã¢ã³ãã³ã¯ãèŠå¯ãè»éããããªã¹ãã®æèãããããŒã»ã¹ã¿ãŒã¯ãæãããšãã§ããªãã£ãããã«å»ºèšãããŸããã ãããŒã¯ãã¢ã€ã¢ã³ãã³ã«èªåã®ã»ãã¥ãªãã£ã®äžè©±ããããèœåãæ¡åŒµããŸããã 圌ãããã§æåã«ãªããŸããã
åæ§ã«ãJetBrainsã¯KotlinãäœæããŸããã åãäŒç€Ÿãæã人æ°ã®ããçµ±åéçºç°å¢ãäœæããŠããŸãã ããŒã«ã¯ãã¹ãŠJavaã§äœæãããŠããŸããããJetBrainsããŒã ã¯å®éã«ãã®èšèªã®ãã¹ãŠã®æ¬ é¥ãæããŠããŸããã ãã®åŸãScalaãGroovyãªã©ã®ä»ã®èšèªã§å®éšãå§ããŸãããããããã§ãæºè¶³ããŸããã§ããã ãããã£ãŠãæçµçã«ãJetBrainsã¯ç¬èªã®èšèªãäœæãããã®æ°ããèšèªãæå€§éã®ã»ãã¥ãªãã£ïŒè£œåã«ãšã©ãŒããªãããã«ããïŒãšã¹ã±ãŒã©ããªãã£ãæäŸããããšãç®æããŸããã ããã«ãKotlinã®åªãããããã¢ãªã«JetBrainsã 圌ãã¯ãã§ã«äžçäžã§ç¥ãããŠããŸããããçŽ æŽãããèšèªã䜿çšããããšã決ããå°éå®¶ã®ã³ãã¥ããã£ãçŸãããšããJetBrainsã¯åœŒãã«ãšã£ãŠããã«ã¯ãŒã«ã«ãªããŸããã ïŒããã§ç§ã¯ãã®è©±ãæãäžè¬çãªèšèã§ã®ã¿èªã£ãã詳现ã«èå³ããããªãã
ãã®ããããã£ã¹ããèããŠãã ããïŒã
Kotlinã¯ãã»ãã¥ãªãã£ã®ç¹ã§Javaã倧å¹
ã«äžåã£ãŠããŸãã ããããã£ãåæåããå¿
èŠããããŸãã
>>> var a: String error: property must be initialized or be abstract
ããã©ã«ãã§ã¯ãåã¯nullå€ãèš±å¯ããŸããã
>>> var a: String = null error: null can not be a value of a non-null type String
ãã®åãç¡å¹åãããŠããããšã瀺ãããå Žåãããã¯
?
ïŒ
>>> var a: String? = null
確ãã«ãnull蚱容åã¯æç€ºçã«äœ¿çšã§ããŸããã
>>> a.length error: only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
Nullableåã¯ãScalaã§äœ¿çšããããªãã·ã§ã³ã®åãªã©ãä»ã®åãšäŒŒãŠããŸãã 䜿çšããåã«ããã®ã¿ã€ãã鿢±ããå¿
èŠããããŸãã ããããã£ã
null
ã§ãªãå Žåãéåžžã®åŒã³åºããšåãããã«åäœããå®å
šãªåŒã³åºãã䜿çšã§ã
null
ã ããããã£ã
null
å Žåãã¡ãœããã¯åŒã³åºãããåã«
null
è¿ã
null
ã
>>> a = null >>> a?.length null >>> a = "AAA" >>> a?.length 3
ããããã£ããŒãã®å Žåã«äŸå€ãã¹ããŒããå®å
šã§ãªãåŒã³åºãã䜿çšããããšãã§ããŸãã
>>> a = null >>> a!!.length kotlin.KotlinNullPointerException
å®å
šã§ãªãåŒã³åºããåŠçããããšã¯æšå¥šãããªãããã絶察ã«å¿
èŠãªå Žåã«ã®ã¿ãããã䜿çšããå¿
èŠããããŸãã Kotlinã®ãããžã§ã¯ãã§ã¯ããããã¯éåžžã«ãŸãã§ãã ããã¯ããã¹ãŠã®åŒã³åºããå®å
šã§ã¯ãªãKotlin Javaãšã®å€§ããªéãã§ãã
ç¥èœ
ã¢ã€ã¢ã³ãã³ã¯ãšãŠãã¯ãŒã«ã§ãããªããªããåœŒã®æŠéã¹ãŒãã¯æ¬åœã«è³¢ãããã§ãã 圌ã¯ç¶æ³ãèšç®ãããããŒã«å±éºã«ã€ããŠèŠåããŸãã Kotlinã¯çã«ç¥çã§ãããéçºè
ã倧ãã«å©ããŸãã
ãã®ãããªã€ã³ããªãžã§ã³ã¹ã®äžäŸã¯ãã¹ããŒããã£ã¹ãã£ã³ã°ã§ãã ããããã£ããŒãã«çãããªããã©ããã確èªãããšãã¯ãå®éã«ãŒãã§ãªãããã«äœ¿çšã§ããŸãã ããé«åºŠãªæ©èœã瀺ãããã«ããã¡ã€ã«ãæäœããŸãã IDEA IntelliJã䜿çšããããšããå§ãããŸãïŒéå§æ¹æ³
ã«ã€ããŠã¯ããã§èª¬æããŸãïŒã ãŸãã¯ã
ãªã³ã©ã€ã³REPLã§ãããã®æ©èœããã¹ãŠè©Šãããšãã§ããŸãã äŸãèããŠã¿ãŸãããïŒ
fun smartCastingExample(str: String?) { if(str != null) print("Length is " + str.length) }
ã芧ã®ãšãããstrã¯æç€ºçã«äœ¿çšãããŸãïŒå®å
šã§ãªãåŒã³åºããå®å
šãªåŒã³åºãã¯ãããŸããïŒã ãããã
if(str != null)
åã
String?
ãããã£ã¹ããããŠãã
String?
ããã§ãã¯ããç¯å²å
ã«ããçç±
String?
String
ã éã®ãã§ãã¯ã§é¢æ°ãçµäºããŠãæ©èœããŸãïŒ
fun smartCastingExample(str: String?) { if(str == null) return print("Length is " + str.length) }
ãã®ååã¯ããã«å¯èœæ§ã§ã®ã¿æ©èœããããã§ã¯ãããŸããã ã¹ããŒããã£ã¹ããå¯èœã§ãã
fun smartCastingExample(any: Any?) { if(any is String) print("String with length " + any.length) }
Kotlinã¯IDEA IntelliJãAndroid StudioãŸãã¯CLionã§å®å
šã«ãµããŒããããŠããŸãã ãããã®IDEã§ã¯ãå€ãã®ãã³ããããªãã¯ãããã³ãµããŒããæäŸãããŸãã Javaã«å
žåçãªã³ã¬ã¯ã·ã§ã³ã®åœä»€ååŠçããKotlinã®ç¹åŸŽçãªå®£èšåã®ãã®ã«çœ®ãæããããäŸã次ã«ç€ºããŸãã ç§»è¡å
šäœãæäŸããã³å®è¡ããã®ã¯éçºç°å¢ã§ããããšã«æ³šæããŠãã ããã

ããããªãºã
ãããŒã»ã¹ã¿ãŒã¯ã¯ã圌ããããå¿
èŠãšããªãå Žåãå
šäœãšããŠã¢ã€ã¢ã³ãã³ãççšããŸããã éåžžã圌ã¯ãã·ã³ãŸãã¯ããã€ãã®å°ããªã³ã³ããŒãã³ãã®ã¿ã䜿çšããŸãã

ç¹ã«ãKotlinã®å²åŠã¯ãåçŽãªãã®ã¯åçŽãªãŸãŸã§ãªããã°ãªããªããšä»®å®ããŠããŸãã Kotlinã®Hello Worldã³ãŒãã¯æ¬¡ã®ãšããã§ãã
fun main(args: Array<String>) { print("Hello, World") }
ããã¯ãããã¹ãã衚瀺ãã颿°ã®1ã€ã«ãããŸããã ä»ã®å
žåçãªKotlinæäœãç°¡åã§ãã 颿°å
šäœãå¿
èŠãšããªããšãã¯ãåäžââã®åŒã§ã§ããŸãïŒ
fun add(a: Int, b: Int) = a + b
以äžã«ããŸã£ããåãããããªã¹ãã¹ã¿ã€ã«ãè€æ°å衚瀺ãããŸãã
æè»æ§
ã¢ã€ã¢ã³ãã³ã¯ããã€ãã®éèŠãªç¹ã§ã¹ãŒããŒãã³ã«è² ããŠããŸãã ããšãã°ãã¹ãŒããŒãã³ã«ã¯èªçããã¬ãŒã¶ãŒã®ç®ãäžãããã圌ã¯åãã§æµãç®ã§çŒåŽããããšãã§ããŸãã ãããŒã»ã¹ã¿ãŒã¯ã¯ã¢ã€ã¢ã³ãã³ã«ã¢ã€ã¬ãŒã¶ãŒãè£
åããŠããŸããã§ãã-ãããã圌ããããç·æ¥ã®å¿
èŠæ§ãšããŠèŠãªãã£ãããã§ãã ããã§ã圌ãIron Manã«ãã®ãããªæ©èœãç°¡åã«è¿œå ã§ããããšã«æ³šæããããšãéèŠã§ãã å®éãããã¯Iron Manã®ãŠãŒã¶ãŒã®åã®ç¯å²å
ã§ãã ããããåæã«ãä»ã®ã¢ããã°ã¬ãŒããIron Manã«æããããšãã§ããŸããããã¯ãããã»ã©å¹æçã§ã¯ãªããããããŸããããããå®ããªããŸãã ããã¯æè»æ§ã®å€§ããªå¯èœæ§ã§ãã ç·Žç¿ã«ç§»ããŸãããã ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã¯ãäœããã®æ¹æ³ã§ã³ã¬ã¯ã·ã§ã³ãªãã©ã«ãæäŸããŸãã PythonãRubyããŸãã¯Haskellã§ã¯ããªã¹ãã¯
[1,2,3]
ããã«å®çŸ©ã§ããŸãã Kotlinã«ã¯ãã®ãããªã³ã¬ã¯ã·ã§ã³ãªãã©ã«ã¯ãããŸãããããããã¬ãã«é¢æ°ïŒã©ãã§ã䜿çšã§ãããã®ïŒãæäŸããKotlinæšæºã©ã€ãã©ãªã«ã¯ã³ã¬ã¯ã·ã§ã³ãäœæã§ãããããã¬ãã«é¢æ°ããããŸãã
>>> listOf(1,2,3) [1, 2, 3] >>> setOf(1,2,3) [1, 2, 3] >>> mapOf(1 to "A", 2 to "B", 3 to "C") {1=A, 2=B, 3=C}
ãªãããããããªã«éèŠãªã®ã§ããïŒ ã³ã¬ã¯ã·ã§ã³ãªãã©ã«ãèšèªã§æäŸãããå ŽåããŠãŒã¶ãŒãã³ã¬ã¯ã·ã§ã³ã䜿çšããæ¹æ³ã決å®ããŸãã ãã¹ãŠã®ã³ã¬ã¯ã·ã§ã³ã«ã¯ããã€ãã®ç¹åŸŽããããŸãã ã©ã®ãªã¹ããããè¯ãã-å¯å€ã§ãããäžå€ã§ãããã«ã€ããŠãåºç¯ãªè°è«ããããŸããïŒ å€æ°ã¯ããå¹ççã§ãããäžå€ã¯ã¯ããã«ã¹ã¬ããã»ãŒãã§ãã ãã®ããŒãã«ã€ããŠã¯å€ãã®æèŠãšè°è«ããããŸãã ããã念é ã«çœ®ããŠããªã¹ããªãã©ã«ã§å¯å€ãªã¹ããŸãã¯äžå€ãªã¹ããçæããŸããïŒ ãããã«ãããããã°ã©ããŒã¯ã³ã¬ã¯ã·ã§ã³ãªãã©ã«ã䜿çšããããšã奜ããããèšèªã䜿çšããããã®ããã°ã©ããŒãªãã·ã§ã³ãäœããã®åœ¢ã§èª²ãããšã«ãªããŸãã ãã®å ŽåãKotlinã¯éžæã®èªç±ãæ®ããŸãã
listOf
ã
setOf
ããã³
listOf
ãäžå€ã®ã³ã¬ã¯ã·ã§ã³ãæäŸããŸãã
>>> var list = listOf(1,2,3) >>> list.add(4) error: unresolved reference: add list.add(4) ^ >>> list + 4 [1, 2, 3, 4]
mutableListOf
ã
mutableSetOf
ããã³
mutableMapOf
ã䜿çšããŠå¯å€ã³ã¬ã¯ã·ã§ã³ãäœæããããšã¯é£ãããããŸãããã
>>> mutableListOf(1,2,3) [1, 2, 3] >>> mutableSetOf(1,2,3) [1, 2, 3] >>> mutableMapOf(1 to "A", 2 to "B", 3 to "C") {1=A, 2=B, 3=C}
泚ïŒèª°ã§ãç¬èªã®ã³ã¬ã¯ã·ã§ã³ãå®çŸ©ãããããäœæãããããã¬ãã«é¢æ°ãå®çŸ©ã§ããŸãã
fun <T> specialListOf(vararg a: T): SpecialList<T> {
äžèšã§ã
T
åã®äžè¬åããããã©ã¡ãŒã¿ãŒã䜿çšããããšãç°¡åã«ããããŸã
T
å¿é
ããªãã§ã ã€ãŸãããã®ã¿ã€ãã®ã³ã¬ã¯ã·ã§ã³ãäœæããã«ã¯ãåãã¿ã€ãã®èŠçŽ ã®ã»ãããæž¡ãå¿
èŠããããŸãã
Kotlinã¯çµã¿èŸŒã¿ãªãã©ã«ã§ã¯ãªãåºæ¬æ©èœã䜿çšããŠãããããKotlinã䜿çšãããµãŒãããŒãã£ã©ã€ãã©ãªã¯æšæºã©ã€ãã©ãªããã匷床ãå£ã£ãŠããŸããã ã©ã€ãã©ãªã倧å¹
ã«æ°äž»åããéçºè
ã®æãè§£æŸãããã1ã€ã®åªããæ©èœã¯ãããããæ¡åŒµæ©èœã§ãã èŠããã«ãã¡ãœãããšããŠæ©èœããããã«é¢æ°ãå®çŸ©ã§ããŸãã
>>> fun Int.double() = this * 2 >>> 2.double() 4
泚ïŒå®éã«ã¯ãã¯ã©ã¹ã«ã¡ãœããã¯è¿œå ãããŸããã æ¡åŒµé¢æ°ã¯ããã®ç¹å¥ãªæ¹æ³ã§åŒã³åºãããåãªã颿°ã§ãã ãã®æ©èœã¯åçŽã«èŠãããããããŸããããæ¬åœã«åŒ·åã§ãã ããšãã°ãKotlinã¯ãä»ã®çŸä»£èšèªãšåæ§ã«ãã³ã¬ã¯ã·ã§ã³ãåŠçããããã®æ©èœãæäŸããŸãã
class Person(val name: String, val surname: String) val avengers = listOf( Person("Tony", "Stark"), Person("Steve", "Rogers"), Person("Bruce", "Banner"), Person("Thor", "") ) val list = avengers .filter { it.surname.isNotBlank() } .sortedWith(compareBy({ it.surname }, { it.name })) .joinToString { "${it.name} ${it.surname}" } print(list)
Kotlinã®å€§ããªå©ç¹ã¯ããã®ãããªé¢æ°ãšåæ§ã®é¢æ°ãæ¡åŒµé¢æ°ãšããŠå®çŸ©ãããŠããããšã§ãã ããšãã°ã
filter
å®è£
ãèŠãŠãã ããã
inline fun <T> Iterable<T>.filter( predicate: (T) -> Boolean ): List<T> { return filterTo(ArrayList<T>(), predicate) } inline fun <T, C : MutableCollection<in T>> Iterable<T>.filterTo( destination: C, predicate: (T) -> Boolean ): C { for (element in this) if (predicate(element)) destination.add(element) return destination }
å®è£
ãã䟡å€ããªãå Žåã¯ããã®é¢æ°ãèªåã§å®çŸ©ã§ããŸãã ã³ã¬ã¯ã·ã§ã³ãåŠçããããã«ä»ã®é¢æ°ãå¿
èŠãªå Žåã¯ãç°¡åã«å®çŸ©ã§ããŸãã éçºè
ã¯ãã°ãã°ãããè¡ããŸãã ããšãã°ãAndroidã®æ¡åŒµæ©èœãå®çŸ©ããå€ãã®ã©ã€ãã©ãªãèŠã€ããããšãã§ããŸãã Androidã®éçºãç°¡çŽ åããŸãã ãã®æ±ºå®ã®å¥ã®çµæ-ããªãã®ãµãŒãã¹ã«ã¯ãã³ã¬ã¯ã·ã§ã³ãåŠçããããã®å€ãã®æ¹æ³ããããŸãã
ããã§ã
filter
ã¯
List
åã§ã¯ãªã
Iterable
ã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµãã颿°ã§ããããšã«æ³šæããããšãéèŠã§ãã
public interface Iterable<out T> { public operator fun iterator(): Iterator<T> }
Iterable
ãå®è£
ããã³ã¬ã¯ã·ã§ã³ã¯ã©ã¹ãç°¡åã«å®çŸ©ã§ããŸããã³ã¬ã¯ã·ã§ã³èšèªã䜿çšãããšãã³ã¬ã¯ã·ã§ã³ãåŠçããããã®ãããã®ã¡ãœããã远å ã§ããŸãã
String
ã§ãå®è£
ãããŠããŸãã
String
ã䜿çšããŠã³ã¬ã¯ã·ã§ã³ãåŠçãããã¹ãŠã®æ¹æ³ã䜿çšã§ããçç±ã¯æ¬¡ã®ãšããã§ãã
>>> "I like cake!".map { it.toLowerCase() }.filter { it in 'a'..'z' }.joinToString(separator = "") ilikecake

ç°¡åãªèŠçŽ
ãããŒã»ã¹ã¿ãŒã¯ã¯ã¹ãŒããŒããŒããŒãšããŠçãŸããããã§ã¯ãªããæŸå°æ§ã¹ãã€ããŒã圌ã«åã¿ã€ããŸããã§ããã 圌ã¯ä¿¡ããããªãã»ã©ã®ç¥èãšçµéšã®ãããã§ã¢ã€ã¢ã³ãã³ãèšèšããŸããã åæ§ã«ãJetBrainsã¯ãããŸããŸãªèšèªçšã®åªããIDEãäœæããäŒç€Ÿã§ãã 圌女ã®äººã
ã¯ãã®ä»äºããå€ããåŠã³ãä¿¡ããããªãã»ã©ã®ããã°ã©ãã³ã°èšèªãæžãããšã«ãã£ãŠåœŒãã®ç¥èãå
·äœåããŸããã 圌ãã¯ããã°ã©ãã³ã°ã®äžçã«æ°ãããã®ãããããããšã¯ããŸããã§ããããä»ã®å€ãã®ããã°ã©ãã³ã°èšèªã®å©ç¹ã掻çšããå®ç§ã«å®æããèšèªãæäŸããŸããããããã£ãŠãéçºè
ã®çç£æ§ãšæé«å質ã®ãããžã§ã¯ããæå€§åããŸãã
ãã®ãããªã¹ããŒããªãã¶ã€ã³ã®çŽ æŽãããäŸã¯ãKotlinã¿ãã«ã§ãã èšèªããŸã ããŒã¿çã§ååšãããšããããã¯ãã§ã«ã¿ãã«ããµããŒãããŠããŸããã ããããKotlinããŒã ãã¿ãã«ã®æäœãããã°ã©ã ã®éçºã«ã©ã®ããã«åœ±é¿ããããæ£ç¢ºã«åæãããšãããããã®åœ±é¿ãåžžã«ãã©ã¹ã«ãªããšã¯éããªãããšã倿ããŸããã ã¿ãã«ããªãªãŒã¹ã«å«ãŸããŠããªãã£ãã®ã¯ãã®ããã§ãã 代ããã«ãKotlinã§
data
泚éã䜿çšã§ããŸãã ããã¯ããæ®éçã§ãããKotlinéçºè
ã¯ãäžè¬ã«ãèšèªã§ã®äœæ¥ã«ãã©ã¹ã®åœ±é¿ãäžããããšã¯ééããããŸããã§ããã ã¿ãã«ã¯ãŸã è°è«ãããŠããããããããã€ãKotlinã¯ãããã®ãã€ãã£ããµããŒããååŸããã§ãããã ãã ãããããå®çŸããã«ã¯ãKotlinããŒã ãšéçºã³ãã¥ããã£ãããã®ãããªãœãªã¥ãŒã·ã§ã³ãå®çŸå¯èœã§ããããšã確èªããå¿
èŠããããŸãã
ããã¯ã³ããªã³ãéåŒã«ç¹åŸŽã¥ããŠããŸãã ããã¯ã¢ã€ãã¢ã®å¯ãéãã§ã¯ãªããæ¬åœã«ããã§ããèšèªã§ãã ããã«ã¯ãæã匷åãªæ©èœã®æå°éã®ã»ãããå«ãŸããŠãããåèšã§ãã°ãããæ©äŒãæäŸããŸãã äžè¬ã«ãKotlinã¯å
±åäœæãå«ããããå€ãã®èªç±ãäžããŸãã
ããŒã ãªãŒãã£ã³ã°
Kotlinããã詳现ã«çè§£ãããå Žåã¯ã
èšèªã®ããã¥ã¡ã³ããèªã
ããšãšã
Kotlin KoansãªãœãŒã¹ã«ç²Ÿéãã
ããšããå§ãããŸãã AndroidåãKotlinã«èå³ãããå Žåã¯ã
ãã®æ¬ãã芧ãã ããã