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