通過調用.joinToString { " ? " },您將{ " * "}作為最終的函數參數傳遞,并將所有其他參數作為其默認值傳遞。因此,查看joinToString的簽名是: public fun <T> Iterable<T>.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((T) -> CharSequence)? = null) 因此,分隔符、前綴、后綴、限制和截斷都是默認值,transform是{ " ? " },它在non-null列表的每個元素上運行。因此,任何non-null值都將替換為“?”,這就是您看到的輸出。 我想你真的想要: listOfNotNull(boardingZone, accessPoint, duration, description).joinToString(" ? ") 或甚至更好的用途: listOfNotNull(boardingZone, accessPoint, duration, description).joinToStri