Kotlin 학습 노트 (2) - 예시 편 3
6243 단어 Kotlin
예시 1
/** * This example introduces a concept that we call mutli-declarations. * It creates multiple variable at once. Anything can be on the right-hand * side of a mutli-declaration, as long as the required number of component * functions can be called on it. * See http://kotlinlang.org/docs/reference/multi-declarations.html#multi-declarations */
fun main(args: Array<String>) {
val pair = Pair(1, "one")
val (num, name) = pair
println("num = $num, name = $name")
}
class Pair<K, V>(val first: K, val second: V) {
operator fun component1(): K {
return first
}
operator fun component2(): V {
return second
}
}
분석: 상기 코드 에서 클래스 대상 을 정 의 했 습 니 다. 클래스 와 클래스 의 구조 함 수 를 어떻게 만 드 는 지 에 대해 서 는 Data class 글 을 참고 하 십시오.또 다른 문 제 는 코드
val (num, name) = pair
의 사용 에 관 한 것 입 니 다. 코드 를 이렇게 쓰 는 것 은 무슨 뜻 입 니까?참고 문서http://kotlinlang.org/docs/reference/multi-declarations.html#example- returning - two - values - from - a - function, 우리 가 한 함수 방법 에서 두 개의 값 을 되 돌려 야 하 는 것 을 보 세 요. 예 를 들 어:/**
*
*/
data class Result(val result: Int, val status: Status)
fun function(...): Result {
// computations
return Result(result, status)
}
// Now, to use this function:
val (result, status) = function(...)
데이터 클래스 대상 이 자동 으로 componentN () 함 수 를 생 성하 기 때문에 여 기 는 생 성 되 지 않 았 습 니 다!
NOTE: we could also use the standard class Pair and have function() return Pair
예시 2:
/** * Data class gets component functions, one for each property declared * in the primary constructor, generated automatically, same for all the * other goodies common for data: toString(), equals(), hashCode() and copy(). * See http://kotlinlang.org/docs/reference/data-classes.html#data-classes */
data class User(val name: String, val id: Int)
fun getUser(): User {
return User("Alex", 1)
}
fun main(args: Array<String>) {
val user = getUser()
println("name = ${user.name}, id = ${user.id}")
// or
val (name, id) = getUser()
println("name = $name, id = $id")
// or
println("name = ${getUser().component1()}, id = ${getUser().component2()}")
}
분석: 모든 데이터 클래스 대상 은 그 속성 에 대응 하 는 componnent 방법 을 자동 으로 생 성 합 니 다.
예시 3:
/** * Kotlin Standart Library provide component functions for Map.Entry */
fun main(args: Array<String>) {
val map = hashMapOf<String, Int>()
map.put("one", 1)
map.put("two", 2)
for ((key, value) in map) {
println("key = $key, value = $value")
}
}
분석: 이 코드 는 맵 집합 을 만 들 고 맵 집합 값 을 출력 합 니 다!HashMap 을 만 들 고 hashMapOf 방법 을 직접 호출 하면 됩 니 다.옮 겨 다 닐 때 in 문법 으로 옮 겨 다 녀 요!(key, value) 이것 은 하나의 형식 일 뿐 문 자 는 key 와 value 에 제한 되 지 않 습 니 다. (k, v)
예시 4:
/** * Data class gets next functions, generated automatically: * component functions, toString(), equals(), hashCode() and copy(). * See http://kotlinlang.org/docs/reference/data-classes.html#data-classes */
data class User(val name: String, val id: Int)
fun main(args: Array<String>) {
val user = User("Alex", 1)
println(user) // toString()
val secondUser = User("Alex", 1)
val thirdUser = User("Max", 2)
println("user == secondUser: ${user == secondUser}")
println("user == thirdUser: ${user == thirdUser}")
// copy() function
println(user.copy())
println(user.copy("Max"))
println(user.copy(id = 2))
println(user.copy("Max", 2))
}
분석: 상기 코드 는 주로 copy 의 사용 을 보 여 줍 니 다. copy 는 복사 대상 에 사용 되 며 복사 과정 에서 대상 의 값 을 바 꿀 수 있 습 니 다! 예 를 들 어 user. copy (id = 2) 는 user 의 id 값 을 바 꾸 었 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
머티리얼 디자인 도입 직후에 할 일안드로이드 프로젝트에 머티리얼 디자인을 도입한 후에 할 일을 적는다. Android 프로젝트를 만든 후 Hello world에 대해 수행합니다. 머티리얼 디자인을 도입하기 위해, build.gradle 를 이하와 같...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.