最近看源碼遇到一句話java
public inline fun String.format(vararg args: Any?): String = java.lang.String.format(this, *args)
其中的*args讓人一臉懵逼, 一上來還覺得是指針數組
後來和羣裏討論,大神寫了個例子,一上來看的時候不太明白,後來本身寫了一下發現其實就是把數組拆分爲 可變參數this
fun main(args: Array<String>) { var arr = arrayOf("gao%s", "gao") testVargs(*arr) } fun testVargs(vararg ttt: String) = ttt.forEach(::println)
進一步驗證, 注意formatNotParse中的參數也是數組,往下傳遞須要 加 * 不然會傳遞內存地址。指針
fun main(args: Array<String>) { var test = "gao%s" println(test.formatNotParse("lili"))//gao[Ljava.lang.Object;@2c7b84de println(test.formatParse("lili"))//gaolili } inline fun String.formatNotParse(vararg args: Any?): String = java.lang.String.format(this, args) inline fun String.formatParse(vararg args: Any?): String = java.lang.String.format(this, *args)