String.split未在Kotlin中编译?

String.split未在Kotlin中编译?,string,kotlin,split,compiler-errors,String,Kotlin,Split,Compiler Errors,快把我逼疯了 我有以下简单的代码片段: 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 delimit

快把我逼疯了

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

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) }
public-fun-CharSequence.split(vararg分隔符:String,ignoreCase:Boolean=false,limit:Int=0):列表=
rangesDelimitedBy(分隔符,ignoreCase=ignoreCase,limit=limit).asIterable().map{substring(it)}

你知道这里有什么问题吗?如果我省略了编译器中的最后两个参数,但我应该能够像现在这样传递它们…

啊,你必须命名这些参数

这很好:

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

奇怪的是,当我有自己编写的带有默认值的命名参数的方法时,我在调用方法时不必指定名称。

啊,你必须命名参数

这很好:

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

奇怪的是,当我有自己编写的带有默认值的命名参数的方法时,调用该方法时不必指定名称。

通常,vararg参数是函数签名中的最后一个参数,除非有可选参数。这是他们结合的一个很有趣的例子。因为vararg可能有多个值,所以有必要显式命名可选参数

例如,可以拆分多个分隔符字符串:

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

请注意limit=1,它可能不会提供您想要的效果,因为默认值为0。

通常,vararg参数是函数签名中的最后一个参数,除非有可选参数。这是他们结合的一个很有趣的例子。因为vararg可能有多个值,所以有必要显式命名可选参数

例如,可以拆分多个分隔符字符串:

val secondSplitStr = "e"
val result = text.split(splitStr, secondSplitStr, ignoreCase = false, limit = 1)
请注意该限制=1,它可能不会提供您想要的效果,因为默认值为0。

可能重复的可能重复的