Kotlin Koans:命名参数解决方案



我在Kotlin Koans上练习Kotlin,并掌握了命名的参数问题。

命名参数

默认和命名参数有助于最大程度地减少过载的数量 并提高功能调用的可读性。图书馆 函数关节串有参数的默认值:

fun joinToString(
    separator: String = ", ",
    prefix: String = "",
    postfix: String = "",
    /* ... */
): String

可以在字符串集合中调用。仅指定两个 参数使函数joinOptions()返回JSON中的列表 格式(例如," [a,b,c]")

答案:

fun joinOptions(options: Collection<String>) = options.joinToString(prefix = "[", postfix = "]")

将" ["添加到开始和"]"到集合的末尾。但是,我尝试使用和不带有joinOptions()打印该系列,它们都有相同的结果:

val collection: Collection<Int> = listOf(1, 2, 3)
fun joinNumbers(numbers: Collection<Int>) = numbers.joinToString(prefix = "[[", postfix = "]")
println(collection) // prints [1, 2, 3]
println(joinNumbers((collection))) // prints [1, 2, 3]

所以我很好奇我是否错过了什么? - 他们在这个问题中要做什么?

println(collection)调用 Collection对象上的 toString()方法,某些集合将以以下格式打印其内容:

[1, 2, 3]

的确等同于调用

collection.joinToString(prefix = "[", delimiter = ", ", postfix = "]")

不过,您不能修改此行为,因此,例如,如果您想在集合自己的行中打印每个元素,则必须编写自己的toString()实现。这是joinToString()方便的地方,您可以做

collection.joinToString(delimiter = "n")

请注意,您不需要通过prefixpostfix的参数,因为默认值适合您的用例。

koans示例可能会不那么令人困惑,但是它可以说明命名参数和默认值的用法。

解决方案就是这样:

fun joinOptions(options: Collection<String>) = options.joinToString(
    prefix = "[",
    separator = ", ",
    postfix = "]"
)

相关内容

最新更新