繁体   English   中英

String.split无法在Kotlin中编译?

[英]String.split not compiling in Kotlin?

快把我逼疯!

我有以下简单的代码片段:

val text = "hello"
val splitStr = "l"
text.split(splitStr, false, 1)

但是第三行有一个编译错误。 它说:

None of the functions can be called with the arguments supplied.

即使Strings.kt中有一个使用以下参数的split方法:

public fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List<String> =
    rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }

对这里的问题有什么想法吗? 如果我省略了编译中的最后两个参数,但是我应该能够像往常一样传递它们……

通常,除非有可选参数,否则vararg参数是函数签名中的最后一个参数。 因此,这是一个非常有趣的组合案例。 因为使用vararg可能有多个值,所以必须显式命名可选参数。

例如,您可以分割多个定界符字符串:

val secondSplitStr = "e"
val result = text.split(splitStr, secondSplitStr, ignoreCase = false, limit = 1)

只需注意该限制= 1,因为默认值为0,它可能不会产生您想要的效果。

嗯,您必须命名参数。

这样可以编译:

val count = text.split(skill, ignoreCase = false, limit = 1)

但是,很奇怪,当我有一些方法时,我使用默认值的命名参数编写了自己,而在调用该方法时不必指定名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM