๋ชฉ์ฐจ
๋ค์ด๊ฐ๊ธฐ ์ ์
์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ apply์ ๊ฐ์ ํจ์๋ฅผ ์ฐ๋ฉด์ ์ ์ฉํจ์ ๋๋ผ๊ณ ์๋๋ฐ ์ ์ scope function์ด ๋ฌด์์ธ์ง ๊ฐ ์ญํ ์ด ๋ฌด์์ธ์ง ์ดํดํ๊ณ ์์ง ์์์ ๋๊ผ๋ค.
์ด๋ฒ ๊ธฐํ์ ์ ๋๋ก ์ดํดํ๊ณ ๋์ด๊ฐ๋ณด์
scope function
: ํน์ ๊ฐ์ฒด์ ์ปจํ ์คํธ ๋ด์์ ํน์ ๋์( ํ๋กํผํฐ ์ด๊ธฐํ, ํ์ฉ) ๋ฑ์ ์คํํ๊ธฐ ์ํ ๋ชฉ์ ๋ง์ ๊ฐ์ง๋ ํจ์
์ค์ฝํ ํจ์๋ฅผ ๋๋ค ํจ์๋ก ์ฌ์ฉํ๊ฒ ๋๋ฉด ์์๋ก ์ค์ฝํ๋ฅผ ํ์ฑํ๋๋ฐ ์ด ์ค์ฝํ ๋ด์์๋ ๊ฐ์ฒด์ ์ด๋ฆ์ ํตํด ์ผ์ผ์ด ์ฐธ์กฐํ ํ์์์ด ๊ฐ์ฒด์ ์ ๊ทผ & ํธ๋ค๋งํ ์ ์๋ค
fun main() {
}
class Book(var name: String, var price:Int) {
fun discount() {
print -= 2000
}
}
apply
- ์ธ์คํด์ค๋ฅผ ์๋ก ์์ฑํ๊ณ ํน์ ๋ณ์์ ํ ๋นํ๊ธฐ ์ ์ ์ด๊ธฐํ์์ ์ ํด์ค ์ ์๋ ์ค์ฝํ ็
- apply ํจ์ ๋ด์ ๋ชจ๋ ๋ช ๋ น์ด ์ํ๋๊ณ ๋๋ฉด ๋ช ๋ น๋ค์ด ์ ์ฉ๋์ด ์๋ก ์์ฑ๋ ์ธ์คํด์ค ๋ฐํ
fun main() {
var a = Book("๋ฑ์ด์ ์ผ๋๊ธฐ", 10000).apply {
name = "์ธ๊ธฐ ์ด์ ์ " + name
discount()
}
println("์ํ๋ช
: ${a.name}, ๊ฐ๊ฒฉ : ${a.price} ")
}
class Book(var name: String, var price:Int) {
fun discount() {
print -= 2000
}
}
run
- ๋ฐํํ๋ ๊ฒ์ด ์์ฑ๋ ์ธ์คํด์ค๊ฐ ์๋ ์ค์ฝํ ๋ด ๋ช ๋ น ์คํ ๊ฒฐ๊ณผ ๊ฐ
- ์ด๋ฏธ ๋ง๋ค์ด์ง ์ธ์คํด์ค์ ๊ฐ ๋๋ ๊ทธ๋ฅผ ์ด์ฉํ ํน์ ๊ณ์ฐ ๊ฒฐ๊ณผ๊ฐ ํ์ํ๋ค๋ฉด run ์ ์ด์ฉ!
fun main() {
var a = Book("๋ฑ์ด์ ์ผ๋๊ธฐ", 10000).apply {
name = "์ธ๊ธฐ ์ด์ ์ " + name
discount()
}
var bookCost = a.run{
println("์ํ๋ช
: ${name} , ๊ฐ๊ฒฉ : ${price}")
price + 2000
}
println("์๊ฐ๋ $bookCost ์
๋๋ค.")
}
class Book(var name: String, var price:Int) {
fun discount() {
print -= 2000
}
}
with
- run๊ณผ ์๊ธด ๊ฒ๋ง ๋ค๋ฅผ ๋ฟ ๋์์, ํน์ง ์ฐจ์ด ์์
var bookCost = a.run{
println("์ํ๋ช
: ${name} , ๊ฐ๊ฒฉ : ${price}")
price + 2000
}
var bookCost = with(a){
println("์ํ๋ช
: ${name} , ๊ฐ๊ฒฉ : ${price}")
price + 2000
}
also / let
- it ํค์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅ
fun main() {
var price = 9999999
var a = Book("๋ฑ์ด์ ์ผ๋๊ธฐ", 10000).apply {
name = "์ธ๊ธฐ ์ด์ ์ " + name
discount()
}
a.run {
println("์ํ๋ช
: ${name}, ๊ฐ๊ฒฉ : ${price}")
}
class Book(var name: String, var price:Int) {
fun discount() {
print -= 2000
}
}
a๋ผ๋ ์ธ์คํด์ค (์ฑ )์ ์ด๋ฆ๊ณผ ๊ฐ๊ฒฉ์ด ์ถ๋ ฅ๋๊ธฐ๋ฅผ ๊ธฐ๋ํ์ง๋ง ๊ฐ๊ฒฉ์ด 999999๋ก ์ถ๋ ฅ๋๋ค.also, let์ ์ด๋ฌํ ํผ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด it์ด๋ผ๋ ํค์๋๋ฅผ ์ ๊ณตํ๋ค.
- ์ด์ ๋ ๋ฐ๋ก main ์ค์ฝํ ๋ด์ ์ธ์คํด์ค ํ๋กํผํฐ์ ๊ฐ์ ์ด๋ฆ์ ๋ณ์๊ฐ ์์ด์ ์ด๋ฅผ ์ถ๋ ฅํ ๊ฒ์ด๋ค!
์์ฑ๋ ์ธ์คํด์ค ๋ฐํ ์ต์ข ์คํ ๊ฒฐ๊ณผ ๋ฐํ
apply | run |
also | let |