Intellij idea 扩展运算符函数调用模糊性

Intellij idea 扩展运算符函数调用模糊性,intellij-idea,kotlin,Intellij Idea,Kotlin,将java StringTokenizer转换为kotlin split时,我无法提供字符分隔符列表: val delim : Array<Char> = arrayOf('(',')','{','}','[',/*many more...*/) sourceExpr.split(delimiters=*delim,ignoreCase=false,limit=0) val delim:Array=arrayOf('(','),'{','}','[',/*更多…*/) source

将java StringTokenizer转换为kotlin split时,我无法提供字符分隔符列表:

val delim : Array<Char> = arrayOf('(',')','{','}','[',/*many more...*/)
sourceExpr.split(delimiters=*delim,ignoreCase=false,limit=0)
val delim:Array=arrayOf('(','),'{','}','[',/*更多…*/)
sourceExpr.split(分隔符=*delim,ignoreCase=false,limit=0)
由于某种原因,kotlin编译器无法在
split(vararg String,…)
split(vararg Char,…)
之间消除歧义。问题:

  • 它是一只虫子吗
  • 是否有铸造工作区
  • 古代预收集时代的vararg概念是如何渗透到现代编程语言中的

  • 问题不是歧义消除,而是类型不正确。在Kotlin中,
    数组
    相当于Java
    字符[]
    。这意味着当您使用
    *delim
    时,实际上是在创建
    vararg字符
    (而不是
    vararg字符

    相反,您应该更喜欢原语特定的
    CharArray

    val delim: CharArray = charArrayOf('(', ')', '{', '}')
    sourceExpr.split(delimiters = *delim, ignoreCase = false, limit = 0)