dataClass

์ด ๊ธ€์—์„œ๋Š” data class์—์„œ derive๋œ copy(), componentN()์„ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค. getter, setter ๋ฐ equals(), hashCode()๋Š” ์ด์ „์— ์จ๋‘” ๊ธ€์„ ์ฐธ์กฐํ•˜๋ฉด ๋œ๋‹ค.

copy()

data class User(val name: String, val phone: String){
}

val user1 = User("ingkells","galaxy")
val user2 = user1.copy(phone = "iphone") // name๋งŒ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ

println(user1.toString())
println(user2.toString())

์ถœ๋ ฅ๊ฐ’

User(name=ingkells, phone=galaxy)
User(name=ingkells, phone=iphone)

data class์˜ copy์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์›ํ•˜๋Š” ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๊ทธ ๋ถ€๋ถ„๋งŒ ๋ฐ”๊พธ์–ด์„œ ๋ณต์‚ฌ๋ฅผ ํ•ด์ค€๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ฐ์ฒด destructuring

val (name, phone) = user1
val (_, phone) = user2

์œ„ ์ฝ”๋“œ์˜ ์ฒซ์งธ์ค„์ฒ˜๋Ÿผ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜๋กœ ๋ถ„ํ•ดํ•˜์—ฌ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘๋ฒˆ์งธ์ค„์€ ์ฒซ๋ฒˆ์งธ ์ธ์ž๊ฐ€ ํ•„์š”์—†์„ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ์„ '_'์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Š” for in ์„ ์‚ฌ์šฉํ•œ ๋ฐ˜๋ณต๋ฌธ ๊ตฌ์กฐ, ๋žŒ๋‹ค์‹ ๋“ฑ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

destructuring ์˜ˆ์‹œ ์ฝ”๋“œ

// userList๋Š” User๋ฅผ ์ž๋ฃŒํ˜•์œผ๋กœํ•˜๋Š” list
for((name, phone) in userList){
    println(name, phone)
}

val lambda = {
    (name, phone): User ->
    println(name, phone)
}

lambda(user1)

componentN()

val name = user1.component1()
val phone = user1.component2()

์œ„ ์ฝ”๋“œ๋Š” ๊ธฐ๋ณธ์ ์ธ component()์„ ๋ณด์—ฌ์ค€๋‹ค. componentN()์œผ๋กœ ํ”„๋กœํผํ‹ฐ์˜ ์ˆœ์„œ๋Œ€๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

Last updated