728x90
์ค์ฝํ ํจ์๋ฅผ ์์๋ณด๊ธฐ ์ ์ ๋๋ค ํจ์์ ํน๋ณํ ๊ธฐ๋ฅ ๋ช๊ฐ์ง๋ฅผ ์ดํด๋ณด์.
๋๋ค ํจ์์ ํน๋ณํ ๊ธฐ๋ฅ๋ค
- ๋๋ค ํจ์๋ ์ผ๋ฐ ํจ์์ฒ๋ผ ์ฌ๋ฌ ๊ตฌ๋ฌธ์ด ์ํ ๊ฐ๋ฅํ๋ค. ์ฐธ๊ณ ๋ก ๋๋ค ํจ์๊ฐ ์ฌ๋ฌ ์ค๋ก ๊ตฌํ๋๋ค๋ฉด ๋ง์ง๋ง ์ค์ ๊ฒฐ๊ณผ๊ฐ์ด ๋ฐํ๋๋ค.
val c: (Int, Int) -> Int = {a,b ->
println("$a $b")
println("์ฌ๋ฌ๊ตฌ๋ฌธ")
println("์ฌ์ฉํ ์ ์์ง๋กฑ!")
a+b // a+b๊ฐ ๋ฐํ๋๋ค.
}
- ๋๋คํจ์์ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ค๋ฉด ์คํํ ๊ตฌ๋ฌธ๋ค๋ง ๋์ดํ๋ฉด ๋๋ค.
val a:() -> Unit = {println("ํ๋ผ๋ฏธํฐ ์์!!!")}
- ํ๋ผ๋ฏธํฐ๊ฐ ํ๋๋ฟ์ด๋ผ๋ฉด 'it'์ ์ฌ์ฉํ๋ค. ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์๋ตํ๊ณ 'it'์ด๋ผ๋ ํค์๋๋ก ๋์ฒด ๊ฐ๋ฅํ๋ค.
val c:(String) -> Unit = {println("$it ๋๋คํจ์")}
์ค์ฝํ ํจ์
- ํจ์ํ ์ธ์ด์ ํน์ง์ ์กฐ๊ธ ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ธฐ๋ณธ ์ ๊ณตํ๋ ํจ์๋ค.
- ํด๋์ค์์ ์์ฑํ ๊ฐ์ฒด๋ฅผ ์ค์ฝํ ํจ์์ ์ ๋ฌํ๋ฉด ๊ฐ์ฒด์ ์์ฑ์ด๋ ํจ์๋ฅผ ์ค์ฝํ ํจ์ ๋ด์์ ์กฐ๊ธ ๋ ๊น๋ํ๊ฒ ๋ถ๋ฌ ์ธ ์ ์๋ค.
- ์ค์ฝํ ํจ์์๋ 5๊ฐ์ง๊ฐ ์๋ค. (apply, run, with, also, let)
- apply
- ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ๋ณ์์ ๋ด๊ธฐ์ ์ ์ด๊ธฐํ ๊ณผ์ ์ ์ํํ ๋ ๋ง์ด ์ฐ์ธ๋ค.
- ๊ฐ์ฒด์ ์ฐธ์กฐ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ 'apply'๋ฅผ ๋ถ์ด๊ณ ์ค๊ดํธ๋ก ๋๋ค ํจ์๋ฅผ ํ๋ ๋ง๋ค์ด apply์ ์ค์ฝํ ์์์ ์ง์ ๊ฐ์ฒด์ ์์ฑ๊ณผ ํจ์๋ฅผ ์ฐธ์กฐ์ฐ์ฐ์ ์์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- apply๋ ๊ฐ์ฒด ์์ ์ ๋ค์ ๋ฐํํ๋ฏ๋ก ์์ฑ๋์๋ง์ ์กฐ์๋ ๊ฐ์ฒด๋ฅผ ๋ณ์์ ๋ฐ๋ก ๋ฃ์ด์ค ์ ์๋ค.
- apply๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ์ธํจ์์ ๋ณ๋์ ์ค์ฝํ์์ ๊ฐ์ฒด์ ๋ณ์์ ํจ์๋ฅผ ์กฐ์ํ๋ฏ๋ก ์ฝ๋๊ฐ ๊น๋ํด์ง๋ค๋ ์ฅ์ ์ด ์๋ค.
- run
- apply์ฒ๋ผ run ์ค์ฝํ ์์์ ์ฐธ์กฐ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค๋ ์ ์ ๊ฐ์ง๋ง ์ผ๋ฐ ๋๋คํจ์์ฒ๋ผ ๊ฐ์ฒด ๋์ ๋ง์ง๋ง ์ค์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ค๋ ์ฐจ์ด์ ์ด ์๋ค.
- ์ด๋ฏธ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง ํ์ ๊ฐ์ฒด์ ํจ์๋ ์์ฑ์ ์ค์ฝํ ๋ด์์ ์ฌ์ฉํด์ผ ํ ๋ ์ ์ฉํ๋ค.
- with
- run๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ๊ฐ์ง์ง๋ง, ๋จ์ง ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ์ฐ์ฐ์ ๋์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋๋ค๋ ์ฐจ์ด ๋ฟ์ด๋ค.
- a. run{...} & with(a){...}
- apply
fun main(){
println("------apply------")
var the_little_prince_1 = Book("์ด๋ฆฐ์์", 10000, 1).apply {
name = "[์ดํน๊ฐ]" + name
discount()
println("apply์ ๊ฒฐ๊ณผ : $name $price ")
}
println("\n------run------")
var the_libble_prince_2 = the_little_prince_1.run {
println("๊ฐ๊ฒฉ : $price, ์์ : $rank ๋ฑ")
the_little_prince_1.name
}
println("run์ ๋ฐํ๊ฐ : $the_libble_prince_2")
}
class Book(var name : String, var price : Int, var rank : Int){
fun discount(){
price -= 2000
}
}
์ถ๋ ฅ
------apply------
apply์ ๊ฒฐ๊ณผ : [์ดํน๊ฐ]์ด๋ฆฐ์์ 8000
------run------
๊ฐ๊ฒฉ : 8000, ์์ : 1 ๋ฑ
run์ ๋ฐํ๊ฐ : [์ดํน๊ฐ]์ด๋ฆฐ์์
- also / let
- also๋ apply์ฒ๋ผ ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ค.
- let์ run์ฒ๋ผ ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ์ต์ข ๊ฐ์ ๋ฐํํ๋ค.
- apply์ run์ด ์ฐธ์กฐ์ฐ์ฐ์ ์์ด ๊ฐ์ฒด์ ๋ณ์์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์๋ค๋ฉด, also์ let์ ๋ง์น ํ๋ผ๋ฏธํฐ๋ก ๊ฐ์ฒด๋ฅผ ๋๊ธด๊ฒ์ฒ๋ผ 'it'์ ํตํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ ๊ตณ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๊น? โก๏ธ ๊ฐ์ ์ด๋ฆ์ ๋ณ์๋ ํจ์๊ฐ ์ค์ฝํ ๋ฐ๊นฅ์ ์ค๋ณต๋์ด ์๋ ๊ฒฝ์ฐ์ ํผ๋์ ๋ฐฉ์งํ๊ธฐ ์ํจ์ด๋ค.
fun main(){
var price = 5000 // Bookํด๋์ค์ ์์ฑ์ด๋ฆ๊ณผ ๊ฐ์ price ๋ณ์๋ฅผ ํ๋ ๋ง๋ค๊ณ ์ด๊ธฐํ ํ๋ค.
var a = Book("๋ฆฌ๋ฒ๋ณด์ด", 6000, 1).apply {
name = "[์ดํน๊ฐ]" + name
discount()
}
a.run { println("์ํ๋ช
: $name, ๊ฐ๊ฒฉ : $price ์")}
}
class Book(var name : String, var price : Int, var rank : Int){
fun discount(){
price -= 2000
}
}
์ถ๋ ฅ
์ํ๋ช
: [์ดํน๊ฐ]๋ฆฌ๋ฒ๋ณด์ด, ๊ฐ๊ฒฉ : 5000 ์
- ๊ฐ๊ฒฉ์ด 6000์์์ ํ ์ธ๋ 4000์ผ๋ก ์ถ๋ ฅ๋์ด์ผ ํ๋๋ฐ ๋ฉ์ธ ํจ์์์ ๋ง๋ price๊ฐ์ธ 5000์์ด ์ถ๋ ฅ๋์๋ค.
- run ํจ์๊ฐ ๊ฐ์ฒด ๋ด์ price ์์ฑ๋ณด๋ค run์ด ์ํด์๋ ๋ฉ์ธํจ์์ price ๋ณ์๋ฅผ ๋ ์ฐ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ํ๋๋ ์ถ๋ ฅ์ด๋ค.
- ์ด๋ด๋๋ run์ ๋์ฒดํ๋ let์ ์ฌ์ฉํ๊ณ , name ๋์ it.name, price ๋์ it.price๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด ๊ฐ์ฒด์ ๊ฐ์ด ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ค.
- apply๋ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด also๋ก ๋์ฒดํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
fun main(){
var price = 5000 // Bookํด๋์ค์ ์์ฑ์ด๋ฆ๊ณผ ๊ฐ์ price ๋ณ์๋ฅผ ํ๋ ๋ง๋ค๊ณ ์ด๊ธฐํ ํ๋ค.
var a = Book("๋ฆฌ๋ฒ๋ณด์ด", 6000, 1).apply {
name = "[์ดํน๊ฐ]" + name
discount()
}
a.run { println("์ํ๋ช
: $name, ๊ฐ๊ฒฉ : $price ์") }
a.let { println("์ํ๋ช
: ${it.name}, ๊ฐ๊ฒฉ : ${it.price} ์") }
}
class Book(var name : String, var price : Int, var rank : Int){
fun discount(){
price -= 2000
}
}
์ถ๋ ฅ
์ํ๋ช
: [์ดํน๊ฐ]๋ฆฌ๋ฒ๋ณด์ด, ๊ฐ๊ฒฉ : 5000 ์
์ํ๋ช
: [์ดํน๊ฐ]๋ฆฌ๋ฒ๋ณด์ด, ๊ฐ๊ฒฉ : 4000 ์
๐ก์ค์ฝํ ํจ์๋ ๊ฐ์ฒด์ ์์ฑ์ด๋ ํจ์๋ฅผ ์ค์ฝํ ๋ด์ ์ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํด์ ์ฌ์ฉํ ์ ์๋ค๋ ์ ๋๋ถ์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
728x90
'์๋๋ก์ด๋๐ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝํ๋ฆฐ] ํด๋์ค ๋คํ์ฑ (0) | 2024.07.02 |
---|---|
[์ฝํ๋ฆฐ] ์ค๋ธ์ ํธ & ์ต์ ๋ฒ ํจํด (0) | 2024.06.27 |
[์ฝํ๋ฆฐ] ๊ณ ์ฐจํจ์ & ๋๋คํจ์ (0) | 2024.06.26 |
[์ฝํ๋ฆฐ] ์ค์ฝํ & ์ ๊ทผ์ ํ์ (0) | 2024.06.26 |
[์ฝํ๋ฆฐ] ์ฝํ๋ฆฐ์ ํ๋ก์ ํธ ๊ตฌ์กฐ (0) | 2024.06.26 |