在 kotlin 中如何从 Array<String> 更改为 Array<CharSequence>

in kotlin how to change to Array<CharSequence> from Array<String>

来自一个库模块 returns 一些 Array<Array<String>>,如下所示:

private val BASIC_ESCAPE_RULE = arrayOf(arrayOf("\"", "&quot;"), // " 
        arrayOf("&", "&amp;"), 
        arrayOf("<", "&lt;"), 
        arrayOf(">", "&gt;"))


fun getBasicEscapeRule(): Array<Array<String>> {
    return BASIC_ESCAPE_RULE.clone()
}

在项目中它依赖于那个库,它还使用另一个库模块来做lookup/translation,它只需要Array<CharSequence>

class translator (vararg lookup: Array<CharSequence>) {

     ... ...
     fun translate(content: String) : String {}
}

当尝试使用从第一个库获取的数据调用第二个库的路由时, 翻译器的制作 translator(*getBasicEscapeRule()) 出错:

Type mismatch: inferred type is Array<Array<String>> but Array<out Array<CharSequence>> was expected

在第二个库中,它需要使用 CharSequence 进行字符操作。

如何将Array转为Array?

要将 Array<Array<String>> 转换为 Array<Array<CharSequence>>,您可以使用以下代码:

val src: Array<Array<String>> = TODO()

val result: Array<Array<CharSequence>> = 
    src.map { array -> array.map { s -> s as CharSequence }.toTypedArray() }.toTypedArray()