๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/Kotlin

    [Kotlin/์ฝ”ํ‹€๋ฆฐ] Infix ํ•จ์ˆ˜ (Infix notation)

    Infix ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜ ์‚ฌ์ด์— ์˜ค๋Š” ํ•จ์ˆ˜ ์กฐ๊ฑด ๋ฉค๋ฒ„ ํ•จ์ˆ˜์ด๊ฑฐ๋‚˜ ํ™•์žฅ ํ•จ์ˆ˜์—ฌ์•ผ ํ•จ ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ ๊ธฐ๋ณธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ varargs ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์˜ˆ์‹œ 1 infix fun Int.shl(x: Int): Int { ... } // calling the function using the infix notation 1 shl 2 // is the same as 1.shl(2) ์˜ˆ์‹œ 2 fun main() { infix fun Int.times(str: String) = str.repeat(this) // 1 println(2 times "Bye ") // 2 val pair = "Ferrari" to "Katrina" // 3 println(pair) infix fun String.onto(..

    [Kotlin/์ฝ”ํ‹€๋ฆฐ] ํƒ€์ž… ์ฒดํฌ, ์ž๋™ ํ˜•๋ณ€ํ™˜ (Type checks and automatic casts)

    is is ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํƒ€์ž… ์ฒดํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ immutable ๋กœ์ปฌ ๋ณ€์ˆ˜(val)์ด๊ฑฐ๋‚˜ property๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ํ™•์ธ๋˜์—ˆ๋‹ค๋ฉด ์ž๋™์œผ๋กœ ํ˜• ๋ณ€ํ™˜์ด ์ด๋ค„์ง„๋‹ค. ์˜ˆ์‹œ 1 fun getStringLength(obj: Any): Int? { if (obj is String) { // 'obj' ๊ฐ€ String ํƒ€์ž…์ž„์ด ํ™•์ธ๋จ. // `obj` ๋ฅผ String ํƒ€์ž…์œผ๋กœ ์ž๋™ ํ˜•๋ณ€ํ™˜ return obj.length } // `obj` ๊ฐ€ String ํƒ€์ž…์ด ์•„๋‹ˆ๋ผ๋ฉด ์—ฌ์ „ํžˆ Any ํƒ€์ž… return null } ์˜ˆ์‹œ 2 !is๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. fun getStringLength(obj: Any): Int? { if (obj !is String) return null // `obj` ..