Taiwan Kotlin User Group 的網站,在台灣推廣 Kotlin 程式語言,舉辦相關活動。如果對 Kotlin 有興趣,想要多瞭解一些,歡迎來我們的社群一起聚會!
宣告 data class
data class Customer(
val name: String,
val email: String
)
data class 內建 toString()
可以直接印出所有屬性內容
val alice = Customer("Alice", "alice@gmail.com")
println(alice)
// Customer(name=Alice, email=alice@gmail.com)
data class 內建 hashCode()
如果兩個 Customer
屬性一樣
hashCode
回傳的值也會一樣
val alice = Customer("Alice", "alice@gmail.com")
val alice2 = Customer("Alice", "alice@gmail.com")
val bob = Customer("Bob", "alice@gmail.com")
println(alice.hashCode()) // 262425105
println(alice2.hashCode()) // 262425105
println(bob.hashCode()) // -1699360388
data class 內建 copy()
可以快速複製物件
val alice = Customer("Alice", "alice@gmail.com")
val alice2 = alice.copy()
println(alice)
// Customer(name=Alice, email=alice@gmail.com)
println(alice2)
// Customer(name=Alice, email=alice@gmail.com)
copy()
可以接收參數
允許在複製時改變部分參數值
val alice = Customer("Alice", "alice@gmail.com")
val alice2 = alice.copy(email = "alice2@gmail.com")
println(alice)
// Customer(name=Alice, email=alice@gmail.com)
println(alice2)
// Customer(name=Alice, email=alice2@gmail.com)
data class 內建 component1()
、component2()
⋯⋯
可以根據宣告的順序存取屬性值
val alice = Customer("Alice", "alice@gmail.com")
println(alice.component2()) // alice@gmail.com
覆寫一些原有函數
可以讓後續撰寫的邏輯更直觀
比方說我們認定同 name
不同 email
可以視為同一人
可以覆寫 equals
data class Customer(
val name: String,
val email: String
) {
override fun equals(other: Any?) =
other is Customer && other.name == this.name
}
後面的程式就可以直接套用此邏輯
val alice = Customer("Alice", "alice@gmail.com")
val alice2 = Customer("Alice", "alice2@gmail.com")
println(alice == alice2) // true
想看更多範例嗎?
可以看看
或加入 kotlin.tips 的 Kotlin 讀書會 !