๊ณ ์ฐจ ํจ์ ์ ์
์ฝํ๋ฆฐ์์๋ ๋๋ค๋ ํจ์ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํด ํจ์๋ฅผ ๊ฐ์ผ๋ก ํํํ ์ ์๋๋ฐ, ๊ณ ์ฐจ ํจ์๋ ๋ค๋ฅธ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๊ฑฐ๋ ํจ์๋ฅผ ๋ฐํํ๋ค. filter, map๋ ๊ณ ์ฐจํจ์์ ์ํ๋ค.
ํจ์ ํ์ - ๋๋ค๋ก ์ธ์ ๋ฐ๊ธฐ
ํจ์ ํ์ ์ ์ ์ํ๋ ค๋ฉด ํจ์ ํ๋ผ๋ฏธํฐ์ ํ์ ์ ๊ดํธ ์์ ๋ฃ๊ณ , ๊ทธ ๋ค์ ํ์ดํ๋ฅผ ์ถ๊ฐํ ๋ค์, ํจ์์ ๋ฐํ ํ์ ์ ์ง์ ํ๋ฉด ๋๋ค. Unit ํ์ ์ ์๋ฏธ ์๋ ๊ฐ์ ๋ฐํํ์ง ์๋ ํจ์ ๋ฐํ ํ์ ์ ์ฐ๋ ํน๋ณํ ํ์ ์ด๋ค. ๊ทธ๋ฅ ํจ์๋ฅผ ์ ์ํ๋ค๋ฉด ํจ์์ ํ๋ผ๋ฏธํฐ ๋ชฉ๋ก ๋ค์ ์ค๋ Unit ๋ฐํ ํ์ ์ง์ ์ ์๋ตํด๋ ๋์ง๋ง, ํจ์ ํ์ ์ ์ ์ธํ ๋๋ ๋ฐํ ํ์ ์ ๋ฐ๋์ ๋ช ์ํด์ผ ํ๋ฏ๋ก Unit์ ๋นผ๋จน์ด์๋ ์ ๋๋ค.
val action: () -> Unit = { println(42) }
์ธ์๋ก ๋ฐ์ ํจ์ ํธ์ถ
์ธ์๋ก ๋ฐ์ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๊ทธ๋ฅ ์ผ๋ฐ ํจ์์ ๊ฐ๋ค.
fun twoAndThree(operation: (op1: Int, Int) -> Int) {
val result = operation(2, 3)
println("The result is $result")
}
๋ฐํํ์ ์ ๋น์ฐํ Nullable ํ๊ฒ ์ ์ธํ ์ ์๊ณ ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ์ ๋ถ์ฌ์ ์ฌ์ฉํด๋ ๋๋ค. ์ด๋ฆ์ ๋ถ์ฌ์ ์ฐ๋ฉด ๊ฐ๋ ์ฑ์ด ๋ ์ข์์ง๋ ํจ๊ณผ๊ฐ ์๋ค.
๋ํดํธ ๊ฐ์ ์ง์ ํ ํจ์ ํ์ ํ๋ผ๋ฏธํฐ๋ ๋์ด ๋ ์ ์๋ ํจ์ ํ์ ํ๋ผ๋ฏธํฐ
ํ๋ผ๋ฏธํฐ๋ฅผ ํจ์ ํ์ ์ผ๋ก ์ ์ธํ ๋๋ ๋ํดํธ ๊ฐ์ ์ ํ ์ ์๋ค.
fun <T> Collection<T>.joinToString(
separator: String = ", ",
prefix: String = "",
postfix: String = "",
transform: (T) -> String = { it.toString() }
): String {
...
}
๋ณด๋ค์ํผ ๋ํดํธ ๊ฐ์ ๋๋ค๋ก ์ง์ ํ๋ฉด ๋๋ค.
ํจ์ ํ์ ์ invoke ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ์ธํฐํ์ด์ค๋ผ๋ ๊ฒ ์ด์ ์์ฐ์ค๋ฝ๊ฒ ์ดํด๋๋๋ฐ, ๊ทธ๋ฅ ํจ์๋ก ์ฌ์ฉํด๋ ๋์ง๋ง invoke๋ฉ์๋๋ฅผ safe call๋ก ํธ์ถํ๋ฉด ๋ null safeํ ์ฝ๋๊ฐ ๋๋ค. ํธ์ถ ๋ถ๋ถ๋ง ์ดํด๋ณด์.
transform?.invoke(element) ?: element.toString()// ํ๋ผ๋ฏธํฐ๊ฐ ํ๋๋ค
์ด๋ ๊ฒ ํ๊ธฐ ์ํด์๋ ํจ์ํ์ ๋ nullableํ๊ฒ ๊ณ ์ณ์ค์ผํ๋ค.
transform: ((T) -> String)? = null
ํจ์๋ฅผ ํจ์์์ ๋ฐํ
ํจ์๋ฅผ ๋ฐํํ๋ ค๋ฉด return ์์ ๋๋ค๋ ๋ฉค๋ฒ ์ฐธ์กฐ๋ ํจ์ ํ์ ์ ๊ฐ์ ๊ณ์ฐํ๋ ์์ ๋ฃ์ผ๋ฉด ๋๋ค.
fun getPredicate(): (Person) -> Boolean {
val startsWithPrefix = { p: Person ->
p.firstName.startsWith(prefix) || p.lastName.startsWith(prefix)
}
if (!onlyWithPhoneNumber) {
return startsWithPrefix
}
return { startsWithPrefix(it)
&& it.phoneNumber != null }
}
์ต์ํ์ง์์ ๋ชจ์ต์ด์ง๋ง ๋ฐํ๊ฐ์ด ํจ์ํ์ ์ด๋ค. return์ ๋ค์ด๊ฐ ์๋ ๊ฒ๋, ๋ณ์๋ก ์ ์๋ ๋๋ค์ ๊ทธ๋ฅ ๋๋ค ์์ด๋ค.
์ ํจ์ ํ์ ์ ์ฌ์ฉํ ๊น? ๊ณ ์ฐจํจ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ข ๋ ๊ฐ๋จํ๊ฒ ๊ฐ์ ํ ์ ์๊ณ ํจ์๋ฅผ ์ง์ ๋๊ธฐ๋ฉด์ ๊ทธ ์ ์ ์ฌ์ฉํ๋ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๋ค์ ์ ๊ฑฐํ ์ ์๊ฒ ๋๋ค. ์ค๋ณต์ ๊ฑฐ ๋จผ์ ์ดํด๋ณด์.
๋๋ค๋ฅผ ํ์ฉํ ์ค๋ณต ์ ๊ฑฐ
์ฌ์ค ์ด๊ฑด filter, map์ ์ฌ์ฉํ๋ฉด์ ๋ฏธ๋ฆฌ ์ฒด๊ฐํ์ ์ ์๋ค. ์ฝํ๋ฆฐ์ผ๋ก ์ฝ๋ฉํ ์คํธ๋ฅผ ๋ณธ๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ ๋ ฅ๊ฐ์ ๋ฐ์ ๋ฆฌ์คํธ๋ก ๋ณํํ๋ ์ฝ๋๋ฅผ ํ์ค๋ก ๋ฐ๊ฟ ์ ์๋ค.
val input = br.readLine().split(" ").map{ it.toInt }.toIntArray()
ํจ์ํ์ ์ด ๋ฐํ๋๋๊ฑธ ๋ฐ์์ split, map, toIntArray๋ก ์ฐจ๋ก๋ก ๋ณํ๋๋ ๋ชจ์ต์ด๋ค. ์ด๋ ๊ฒ ํจ์๋ฅผ ๋๊ธฐ๋ ๊ฑด ๋์์ธํจํด ์ค ์ ๋ตํจํด์ ๋์ํ๋ค๊ณ ๋ณผ ์ ์๋ค. ์ ๋ต์ ๋ฐ๋ผ ๋ค๋ฅธ ๋๋ค๋ฅผ ๋๊ธฐ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๋ฐ ๊ตฌ๋ฒ์ ์ฒ๋ผ ์ ๋ต๋ณ๋ก ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์์ด์ง๋ค.
์ธ๋ผ์ธ ํจ์: ๋๋ค์ ๋ถ๊ฐ ๋น์ฉ ์์ ๊ธฐ inline
inline ๋ณ๊ฒฝ์๋ฅผ ์ด๋ค ํจ์์ ๋ถ์ด๋ฉด ์ปดํ์ผ๋ฌ๋ ๊ทธ ํจ์๋ฅผ ํธ์ถํ๋ ๋ชจ๋ ๋ฌธ์ฅ์ ํจ์ ๋ณธ๋ฌธ์ ํด๋นํ๋ ๋ฐ์ดํธ์ฝ๋๋ก ๋ฐ๊ฟ์น๊ธฐ ํด์ค๋ค. ์ฆ ๋ด๊ฐ ๋ณผ ๋๋ ๋ณ๋์ ํจ์์ง๋ง, ์ปดํ์ผ๋ฌ๊ฐ ๋ณผ ๋๋ ๋ณธ๋ฌธ์ ๋ค์ด๊ฐ ์๊ฒ ๋๋ ๊ฒ์ด๋ค. ํธ์ถ ๋น์ฉ์ ์์ ์ค๋ค๋ ๋ง์ด๋ค
์ธ๋ผ์ด๋์ด ์๋ํ๋ ๋ฐฉ์
์ด๋ค ํจ์๋ฅผ inline์ผ๋ก ์ ์ธํ๋ฉด ๊ทธ ํจ์์ ๋ณธ๋ฌธ์ด ์ธ๋ผ์ธ๋๋ค. ๋ค๋ฅธ ๋ง๋ก ํ๋ฉด ํจ์๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ฅผ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐ์ดํธ์ฝ๋ ๋์ ์ ํจ์ ๋ณธ๋ฌธ์ ๋ฒ์ญํ ๋ฐ์ดํธ ์ฝ๋๋ก ์ปดํ์ผํ๋ค๋ ๋ป์ด๋ค.
inline fun foo(): Person -> Boolean { }
์ธ๋ผ์ธ ํจ์์ ๋ณธ๋ฌธ ์ฝ๋๊ฐ ํธ์ถ ์ง์ ์ ๋ค์ด๊ฐ๊ฒ ๋๊ณ , ์ธ๋ผ์ธ ํจ์ ์์ ์๋ ๋๋ค ๋ณธ๋ฌธ์ ๊ทธ๋ฅ ์ผ๋ฐ์ ์ธ ๋๋ค ํธ์ถ๋ก ๋๋ค. ๋ฐ๋ผ์ ์ปดํ์ผ๋ฌ๋ ๋ฌด๋ช ํด๋์ค๋ก ๊ฐ์ธ์ง ์๊ณ ๋๋ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ค.
์ธ๋ผ์ธ ํจ์์ ํ๊ณ์
์ธ๋ผ์ธ์ผ๋ก ์ฌ์ฉํ ๋๋ค๊ฐ ๋ณธ๋ฌธ์ ํผ์ณ์ง๊ธฐ ๋๋ฌธ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๋๋ค๋ฅผ ๋ค๋ฅธ ๋ณ์์ ์ ์ฅํ๋ค๊ฐ ์ฌ์ฉํด์ผ๋๋ ๊ฒฝ์ฐ์๋ ์ธ๋ผ์ด๋์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ด ๊ฒฝ์ฐ ์ธ๋ผ์ธ ํค์๋๋ฅผ ๋ถ์ด๋ฉด
Illegal usage of inline-parameter ๋ฉ์์ง๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ noinline ํค์๋๋ฅผ ๋ถ์ฌ์ ๋ฏธ๋ฆฌ ์ธ๋ผ์ด๋์ ๊ธ์ง์์ผ์ผํ๋ค.
fillter์ map์ ์ธ๋ผ์ธ ํจ์๋ก ์ปฌ๋ ์ ์์ ์์ฃผ ๋ง์ด ์ฌ์ฉ๋๋๋ฐ, ๊ณผ์ ์์ ์ค๊ฐ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ปฌ๋ ์ ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ๋ถ๊ฐ๋น์ฉ๋ ๊ฐ์ด ์ปค์ง๋ค. ์ด๋๋ asSequence๋ฅผ ๋ถ์ฌ ์ํ์ค๋ก ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ค๋ง ๋๋ค๋ฅผ ์ ์ฅํด์ ์ฌ์ฉํ๋ ์ํ์ค๋ ๋๋ค๋ฅผ ์ธ๋ผ์ธํด์ ์ฌ์ฉํ์ง์๋๋ค.
ํจ์๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ์ ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ
inline ํค์๋์ ์ด์ ์ ๋ฐฐ์ฐ๊ณ ๋๋ฉด ์ฝ๋๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ฝ๋ ์ฌ๊ธฐ์ ๊ธฐ์์ inline์ ์ฌ์ฉํ๊ณ ์ถ์ด์ง ๊ฒ์ด๋ค. ํ์ง๋ง ์ฌ์ค ์ด๋ ์ข์ ์๊ฐ์ด ์๋๋ค. inline ํค์๋๋ฅผ ์ฌ์ฉํด๋ ๋๋ค๋ฅผ ์ธ์๋ก ๋ฐ๋ ํจ์๋ง ์ฑ๋ฅ์ด ์ข์์ง ๊ฐ๋ฅ์ฑ์ด ๋๋ค(์ ์ฒด๋ก ๋ณด๋ฉด ์ฑ๋ฅ์ด ๋๋น ์ง ์ ์๋ค๋ ์ด์ผ๊ธฐ).
์ผ๋ฐ ํจ์ ํธ์ถ์ ๊ฒฝ์ฐ JVM์ ์ด๋ฏธ ๊ฐ๋ ฅํ๊ฒ ์ธ๋ผ์ด๋์ ์ง์ํ๋ค. JVM์ ์ฝ๋ ์คํ์ ๋ถ์ํด์ ๊ฐ์ฅ ์ด์ต์ด ๋๋ ๋ฐฉํฅ์ผ๋ก ํธ์ถ์ ์ธ๋ผ์ด๋ํ๋ค. ์ด๋ฐ ๊ณผ์ ์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ค์ ๊ธฐ๊ณ์ด ์ฝ๋๋ก ๋ฒ์ญํ๋ ๊ณผ์ (JIT)์์ ์ผ์ด๋๋ค. ์ด๋ฐ JVM์ ์ต์ ํ๋ฅผ ํ์ฉํ๋ค๋ฉด ๋ฐ์ดํธ์ฝ๋์์๋ ๊ฐ ํจ์ ๊ตฌํ์ด ์ ํํ ํ ๋ฒ๋ง ์์ผ๋ฉด ๋๊ณ , ๊ทธ ํจ์๋ฅผ ํธ์ถํ๋ ๋ถ๋ถ์์ ๋ฐ๋ก ํจ์ ์ฝ๋๋ฅผ ์ค๋ณตํ ํ์๊ฐ ์๋ค. ๋ฐ๋ฉด ์ฝํ๋ฆฐ ์ธ๋ผ์ธ ํจ์๋ ๋ฐ์ดํธ ์ฝ๋์์ ๊ฐ ํจ์ ํธ์ถ ์ง์ ์ ํจ์ ๋ณธ๋ฌธ์ผ๋ก ๋์นํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์ค๋ณต์ด ์๊ธด๋ค. ๊ฒ๋ค๊ฐ ํจ์๋ฅผ ์ง์ ํธ์ถํ๋ฉด ์คํ ํธ๋ ์ด์ค๊ฐ ๋ ๊น๋ํด์ง๋ค.
inline ๋ณ๊ฒฝ์๋ฅผ ํจ์์ ๋ถ์ผ ๋๋ ์ฝ๋ ํฌ๊ธฐ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํ๋ค. ์ธ๋ผ์ด๋ํ๋ ํจ์๊ฐ ํฐ ๊ฒฝ์ฐ ํจ์์ ๋ณธ๋ฌธ์ ํด๋นํ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ชจ๋ ํธ์ถ ์ง์ ์ ๋ณต์ฌํด ๋ฃ๊ณ ๋๋ฉด ๋ฐ์ดํธ์ฝ๋๊ฐ ์ ์ฒด์ ์ผ๋ก ์์ฃผ ์ปค์ง ์ ์๋ค.
์์ ๊ด๋ฆฌ๋ฅผ ์ํด ์ธ๋ผ์ธ๋ ๋๋ค ์ฌ์ฉ
์๋ฐ 7๋ถํฐ๋ ์์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ํน๋ณํ ๊ตฌ๋ฌธ์ธ try-with-resource๋ฌธ์ด ์๊ฒผ๋ค. ์ฝํ๋ฆฐ์ผ๋ก๋ useํจ์๊ฐ ์๋๋ฐ closable ์์์ ๋ํ ํ์ฅํจ์๋ฉฐ, ํ๋ผ๋ฏธํฐ๋ ๋๋ค๋ค. ์๋๋ฐฉ์์ ๋๋ค๋ฅผ ํธ์ถํ๊ณ , ์์์ ๋ซ๋๋ค.
BufferedReader(FileReader(path)).use { br ->
return br.readLine()
}
๋๋ค๋ฅผ ์คํํ๊ณ , FileReader๋ฅผ ์ธ์๋ก ๋ฐ๋ BufferedReader๋ฅผ closeํ๋ค.
๊ณ ์ฐจ ํจ์ ์์์ ํ๋ฆ ์ ์ด
๋๋ค ์์ return๋ฌธ: ๋๋ค๋ฅผ ๋๋ฌ์ผ ํจ์๋ก๋ถํฐ ๋ฐํ
for์ forEach์ ์ฐจ์ด๋ฅผ ๋ณด๊ฒ ๋ค.
fun lookForAlice(people: List<Person>) {
people.forEach {
if (it.name == "Alice") {
println("Found!")
return
}
}
println("Alice is not found")
}
๋๋ค ์์์ return์ ์ฌ์ฉํ๋ฉด ๋๋ค๋ก๋ถํฐ๋ง ๋ฐํ๋๋ ๊ฒ ์๋๋ผ ๊ทธ ๋๋ค๋ฅผ ํธ์ถํ๋ ํจ์๊ฐ ์คํ์ ๋๋ด๊ณ ๋ฐํ๋๋ค. ๊ทธ๋ ๊ฒ ์์ ์ ๋๋ฌ์ธ๊ณ ์๋ ๋ธ๋ก๋ณด๋ค ๋ ๋ฐ๊นฅ์ ์๋ ๋ค๋ฅธ ๋ธ๋ก์ ๋ฐํํ๊ฒํ๋ ๋ฐฉ์์ non-local return์ด๋ผ ๋ถ๋ฅธ๋ค. ์์ ์์ forEach๋ ์ธ๋ผ์ธ ํจ์์ด๋ฏ๋ก ๋๋ค ๋ณธ๋ฌธ๊ณผ ํจ๊ป ์ธ๋ผ์ด๋๋๋ค. ๋ฐ๋ผ์ return ์์ด ๋ฐ๊นฅ์ชฝ ํจ์๋ฅผ ๋ฐํ์ํค๋๋ก ์ฝ๊ฒ ์ปดํ์ผํ ์ ์๋ค.
๋๋ค๋ก๋ถํฐ ๋ฐํ: ๋ ์ด๋ธ(label)์ ์ฌ์ฉํ return
๋๋ค ์์์๋ ๋ก์ปฌ return์ ์ฌ์ฉํ ์ ์๋ค. ๋ฐ๋ณต๋ฌธ ํ์ถ ํ ๋ break์ง์ ์ง์ ํ๋ ๊ฒ๊ณผ ๋น์ทํ๋ฐ. ๋ก์ปฌ return๊ณผ ๋๋ก์ปฌ return์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ ์ด๋ธ(label)์ ์ฌ์ฉํด์ผ ํ๋ค.
fun lookForAlice(people: List<Person>) {
people.forEach label@{
if (it.name == "Alice") return@label
}
println("Alice might be somewhere")
}โ
๋๋ค์ ๋ ์ด๋ธ์ ๋ถ์ฌ์ ์ฌ์ฉํ๋ ๋์ ๋๋ค๋ฅผ ์ธ์๋ก ๋ฐ๋ ์ธ๋ผ์ธ ํจ์์ ์ด๋ฆ์ return ๋ค์ ๋ ์ด๋ธ๋ก ์ฌ์ฉํด๋ ๋๋ค. ๋๋ค ์์ ๋ ์ด๋ธ์ ๋ช ์ํ๋ฉด ๋๋ค์์ ๋ ์ด๋ธ์ 2๊ฐ ์ด์ ๋ฃ์ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์์ด๋ฆ์ ๋ ์ด๋ธ๋ก ์ฌ์ฉํ ์ ์๋ค.
people.forEach {
if (it.name == "Alice") return@forEach
}
๋ฌด๋ช ํจ์: ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ return
๋ฌด๋ช ํจ์๋ ์ฝ๋ ๋ธ๋ก์ ํจ์์ ๋๊ธธ ๋ ์ฌ์ฉํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด๋ค. ๋๋ค ์์์ ์ฌ๋ฌ๊ฐ์ return@label์ด ํ์ํ๊ฒ ๋๋ฉด ๋ณด๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ด๋ด ๋๋ ๋ฌด๋ช ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
fun (person) {
if (person.name == "Alice") return
println("${person.name} is not Alice")
}
์ด๋ ๊ฒ ์๊ทธ๋์ฒ๊ฐ ์๋๊ฒ ๋ฌด๋ช ํจ์์ธ๋ฐ
fun lookForAlice(people: List<Person>) {
people.forEach(fun (person) {
if (person.name == "Alice") return
println("${person.name} is not Alice")
})
}
๋ฌด๋ช ํจ์ ์์์ ๋ ์ด๋ธ์ด ๋ถ์ง ์์ return ์์ ๋ฌด๋ช ํจ์ ์์ฒด๋ฅผ ๋ฐํ์ํจ๋ค. ์์ ๋ณธ๋ฌธ์ผ๋ก ํ๋ฉด ๋ฐํํ์ ๋ ์๋ตํ ์ ์๊ฒ๋๋ค. ๋ฌด๋ช ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌด๋ช ํจ์ ๋ณธ์ธ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ ๋ฆฌํด ๋ฐฉ์์ผ๋ก ์๋ํ๊ฒ๋๋ค. ๋๋ค ์์ ๊ตฌํ ๋ฐฉ๋ฒ์ด๋ ๋๋ค ์์ ์ธ๋ผ์ธ ํจ์์ ๋๊ธธ ๋ ์ด๋ป๊ฒ ๋ณธ๋ฌธ์ด ์ธ๋ผ์ด๋ ๋๋์ง ๋ฑ์ ๊ท์น์ ๋ฌด๋ช ํจ์์๋ ๋ชจ๋ ์ ์ฉํ ์ ์๋ค.
์์ฝํ์๋ฉด return์ ์ดํดํ ๋๋ ๊ฐ์ฅ ๊ฐ๊น์ด fun์ ๋ฐํํ๋ค๊ณ ๋ณด๋๊ฒ ํธํ๋ค.
"๋๊ธ, ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์๋ฉด ํฐ ํ์ด ๋ฉ๋๋ค"
'๐๐๏ธ > ์ฝํ๋ฆฐ ์ธ ์ก์ ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Kotlin in action - ๋ถ๋ก E. ์ฝ๋ฃจํด๊ณผ Async/Await (0) | 2023.10.13 |
---|---|
Kotlin in action(7) (0) | 2023.10.10 |
Kotlin in action(6) (0) | 2023.10.10 |
Kotlin in action(5) (0) | 2023.10.10 |
Kotlin in action(4) (0) | 2023.10.10 |