#37 Kotlin Koans Builders/String and map builders 해설
1 소개
Kotlin 공식 레퍼런스의 Kotlin Koans Builders/String and map builders의 해설 기사입니다.
Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.
다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!
한 번 각자로 도전하고 나서, 눈에 띄게 된다고 생각합니다
2 StringBuilder를 사용하여 문자열 연결
Kotlin의 문자열 연결 방법 중 하나는 StringBuilder 인스턴스를 사용하는 것입니다.
다음의 순서로 이용합니다.
Kotlin의 문자열 연결 방법 중 하나는 StringBuilder 인스턴스를 사용하는 것입니다.
다음의 순서로 이용합니다.
StringBuilder 인스턴스를 생성한다.
예를 보자.
Stringbuilder_Example
fun main(){
val sb = StringBuilder()
sb.append("G")
sb.append("o")
sb.append("o")
sb.append("d")
println(sb.toString())
}
위 예제의 실행 결과는
Good
입니다.3 Builders/String and map builders 설명
Kotlin Koans Builders/String and map builders의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
Extension function literals are very useful for creating builders, e.g.:
Examplefun buildString(build: StringBuilder.() -> Unit): String {
val stringBuilder = StringBuilder()
stringBuilder.build()
return stringBuilder.toString()
}
val s = buildString {
this.append("Numbers: ")
for (i in 1..3) {
// 'this' can be omitted
append(i)
}
}
s == "Numbers: 123"
Add and implement the function 'buildMutableMap' with one parameter (of type extension function) creating a new HashMap, building it and returning it as a result. The usage of this function is shown below.
String_and_map_buildersimport java.util.HashMap
/* TODO */
fun usage(): Map<Int, String> {
return buildMutableMap {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
usage() 를 호출하면 Int 형의 key/String 형의 value 가 포함된 Map 가 돌려주어집니다.
이 Map을 생성하기 위해 builderMutableMap()을 사용하기 때문에 이 함수를 적절하게 구현합니다.
buildMutableMap()에는 put()이라는 함수를 건네주어(받는 인수명을 build로 합니다.), Int형의 key/String형의 value가 격납된 HashMap를 돌려줄 필요가 있으므로 이하와 같은 구현이 됩니다 합니다.
String_and_map_buildersfun <Int, String> buildMutableMap(build: HashMap<Int, String>.() -> Unit): Map<Int,String>
HashMap< Int, String>
라고 하는 구현이 되고 있는 것은, put()를 호출하는 것이 HashMap 인스턴스이기 때문이군요.
또, buildMutableMap()의 반환값이 Map형이 되고 있습니다만, 물론 HashMap형에서도 OK입니다.
그런 다음 build()를 호출하기 위한 HashMap 인스턴스를 생성합니다.
생성한 HashMap 인스턴스가 build()를 호출하고 반환값으로 반환하면 OK입니다.
따라서 최종 구현은 다음과 같습니다.
String_and_map_buildersimport java.util.HashMap
fun <Int, String> buildMutableMap(build: HashMap<Int, String>.() -> Unit): Map<Int, String> {
val map = HashMap<Int, String>()
map.build()
return map
}
fun usage(): Map<Int, String> {
return buildMutableMap {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
4 마지막으로
다음은 Kotlin Koans Builders/The function apply의 해설을 하겠습니다
Reference
이 문제에 관하여(#37 Kotlin Koans Builders/String and map builders 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/63071b24f842b933a73e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
fun buildString(build: StringBuilder.() -> Unit): String {
val stringBuilder = StringBuilder()
stringBuilder.build()
return stringBuilder.toString()
}
val s = buildString {
this.append("Numbers: ")
for (i in 1..3) {
// 'this' can be omitted
append(i)
}
}
s == "Numbers: 123"
import java.util.HashMap
/* TODO */
fun usage(): Map<Int, String> {
return buildMutableMap {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
fun <Int, String> buildMutableMap(build: HashMap<Int, String>.() -> Unit): Map<Int,String>
import java.util.HashMap
fun <Int, String> buildMutableMap(build: HashMap<Int, String>.() -> Unit): Map<Int, String> {
val map = HashMap<Int, String>()
map.build()
return map
}
fun usage(): Map<Int, String> {
return buildMutableMap {
put(0, "0")
for (i in 1..10) {
put(i, "$i")
}
}
}
다음은 Kotlin Koans Builders/The function apply의 해설을 하겠습니다
Reference
이 문제에 관하여(#37 Kotlin Koans Builders/String and map builders 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/G-o/items/63071b24f842b933a73e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)