Android 和 Kotlin varargs:格式化字符串返回垃圾



>我遇到了一个奇怪的问题:我有一个用于检索资源字符串的通用函数(它只是为了避免每次都编写context.resources.getString()):

protected fun string(@StringRes stringRes: Int, vararg args: String): String = app.getString(stringRes, args) 

直到现在,当我添加 varargs 以检索格式化字符串时,工作正常。简单的字符串仍然可以正常工作,但是当我尝试检索格式化的字符串时:

string(R.string.formatted_string, myId)

我的字符串资源:

<string name="formatted_string">#%s</string>

我得到一些垃圾:

#[Ljava.lang.String;@3a59711

预期:

#4848684

使用我请求的资源进行垃圾更改

它看起来像一个对象标识符。

如果我不使用该方法,它可以正常工作

这是怎么回事?

您的解决方案是使用点差运算符*

fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)

参数数量可变(变量)

最新更新