将Java StringTokenizer转换为kotlin拆分时,我无法提供字符定界符列表:
val delim : Array<Char> = arrayOf('(',')','{','}','[',/*many more...*/)
sourceExpr.split(delimiters=*delim,ignoreCase=false,limit=0)
在这里,由于某种原因,kotlin编译器无法在split(vararg String,...)
和split(vararg Char,...)
之间进行歧义。问题:
答案 0 :(得分:5)
问题不是消除歧义,而是类型不正确。在Kotlin中,Array<Char>
等效于Java Character[]
。这意味着当您使用*delim
时,实际上是在创建vararg Character
(而不是vararg Char
)。
相反,您应该更喜欢原始的CharArray
:
val delim: CharArray = charArrayOf('(', ')', '{', '}')
sourceExpr.split(delimiters = *delim, ignoreCase = false, limit = 0)