gpt4 book ai didi

intellij-idea - 传播运算符函数调用歧义

转载 作者:行者123 更新时间:2023-12-04 06:29:43 24 4
gpt4 key购买 nike

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

val delim : Array<Char> = arrayOf('(',')','{','}','[',/*many more...*/)
sourceExpr.split(delimiters=*delim,ignoreCase=false,limit=0)

这里 kotlin 编译器出于某种原因无法消除 split(vararg String,...)split(vararg Char,...) 之间的歧义。问题:

  1. 是一个错误吗?
  2. 有转换解决方法吗?
  3. 古代前收集时代的可变参数概念是如何渗透到现代编程语言中的?

最佳答案

问题不是消歧,而是类型不正确。在 Kotlin 中,一个 Array<Char>相当于 Java Character[] .这意味着当您使用 *delim ,你实际上是在创建一个 vararg Character (而不是 vararg Char )。

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

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

关于intellij-idea - 传播运算符函数调用歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54874675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com