#38 Kotlin Koans Builders/The function apply 해설
1 소개
Kotlin 공식 레퍼런스의 Kotlin Koans Builders/The function apply의 해설 기사입니다.
Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.
다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!
한 번 각자로 도전하고 나서, 눈에 띄게 된다고 생각합니다
2 Builders/The function apply 해설
Kotlin Koans Builders/The function apply의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
The previous examples can be rewritten using the library function apply (see examples below). Write your own implementation of this function named 'myApply'.
The_function_applyfun <T> T.myApply(f: T.() -> Unit): T { TODO() }
fun createString(): String {
return StringBuilder().myApply {
append("Numbers: ")
for (i in 1..10) {
append(i)
}
}.toString()
}
fun createMap(): Map<Int, String> {
return hashMapOf<Int, String>().myApply {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
#37 Kotlin Koans Builders/String and map builders 의 코드로 작성한 hashMap (와 예로 등장한 StringBuiler를 이용한 캐릭터 라인의 연결)를 myApply()라고 하는 함수를 구현하는 것으로 표현합니다.
myApply() 수신기T
는 모든 유형을 나타냅니다.
그래서 createString() · createMap() 함수 내에서 StringBuilder 인스턴스와 HashMap 인스턴스가 myApply()를 호출할 수 있네요.
createString()에서는,
StringBuilder 인스턴스가 myApply()에 인수로 append()를 전달하여 문자열을 연결하는 기능을 myApply()에 맡기고 있습니다.
createMap()에서는,
HashMap 인스턴스가 myApply()에 인수로서 put()을 건네주어, Map에 key/value의 페어를 격납하는 기능을 myApply()에 맡기고 있습니다.
즉, myApply()
인수 f 가 받는 append() 와 put() 을 실행해, 그 결과 얻어지는 StringBuilder 인스턴스와 HashMap 인스턴스를 돌려주는 기능을 구현하면 됩니다.
따라서 다음과 같은 구현이 됩니다.
The_function_applyfun <T> T.myApply(f: T.() -> Unit): T {
f()
return this
}
fun createString(): String {
return StringBuilder().myApply {
append("Numbers: ")
for (i in 1..10) {
append(i)
}
}.toString()
}
fun createMap(): Map<Int, String> {
return hashMapOf<Int, String>().myApply {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
이 예제에서는 구현하지 않았지만 관련 사항으로 Scope 함수가 있습니다.
Scope 함수는 Kotlin의 Scope 함수는 무엇입니까?에서 설명합니다.
3 마지막으로
다음에는 Kotlin Koans Builders/Builders how it works의 해설을 하겠습니다
Reference
이 문제에 관하여(#38 Kotlin Koans Builders/The function apply 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/b23dd9e1e2ab7a069879
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Kotlin Koans Builders/The function apply의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
The previous examples can be rewritten using the library function apply (see examples below). Write your own implementation of this function named 'myApply'.
The_function_apply
fun <T> T.myApply(f: T.() -> Unit): T { TODO() }
fun createString(): String {
return StringBuilder().myApply {
append("Numbers: ")
for (i in 1..10) {
append(i)
}
}.toString()
}
fun createMap(): Map<Int, String> {
return hashMapOf<Int, String>().myApply {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
#37 Kotlin Koans Builders/String and map builders 의 코드로 작성한 hashMap (와 예로 등장한 StringBuiler를 이용한 캐릭터 라인의 연결)를 myApply()라고 하는 함수를 구현하는 것으로 표현합니다.
myApply() 수신기
T
는 모든 유형을 나타냅니다.그래서 createString() · createMap() 함수 내에서 StringBuilder 인스턴스와 HashMap 인스턴스가 myApply()를 호출할 수 있네요.
createString()에서는,
StringBuilder 인스턴스가 myApply()에 인수로 append()를 전달하여 문자열을 연결하는 기능을 myApply()에 맡기고 있습니다.
createMap()에서는,
HashMap 인스턴스가 myApply()에 인수로서 put()을 건네주어, Map에 key/value의 페어를 격납하는 기능을 myApply()에 맡기고 있습니다.
즉, myApply()
인수 f 가 받는 append() 와 put() 을 실행해, 그 결과 얻어지는 StringBuilder 인스턴스와 HashMap 인스턴스를 돌려주는 기능을 구현하면 됩니다.
따라서 다음과 같은 구현이 됩니다.
The_function_apply
fun <T> T.myApply(f: T.() -> Unit): T {
f()
return this
}
fun createString(): String {
return StringBuilder().myApply {
append("Numbers: ")
for (i in 1..10) {
append(i)
}
}.toString()
}
fun createMap(): Map<Int, String> {
return hashMapOf<Int, String>().myApply {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
이 예제에서는 구현하지 않았지만 관련 사항으로 Scope 함수가 있습니다.
Scope 함수는 Kotlin의 Scope 함수는 무엇입니까?에서 설명합니다.
3 마지막으로
다음에는 Kotlin Koans Builders/Builders how it works의 해설을 하겠습니다
Reference
이 문제에 관하여(#38 Kotlin Koans Builders/The function apply 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/b23dd9e1e2ab7a069879
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(#38 Kotlin Koans Builders/The function apply 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/G-o/items/b23dd9e1e2ab7a069879텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)