字符串插值返回意外结果

问题描述 投票:0回答:1

我有一个数据类Shift:

@Serializable
data class Shift(
    @SerialName("id") val id: String,
    @SerialName("username") val username: String,
    @SerialName("start") var start: LocalDateTime,
    @SerialName("end") var end: LocalDateTime?,
    @SerialName("canceled") var canceled: Boolean,
    @SerialName("user") val user: User,
)

我想将这个

id
插入到带有字符串插值的字符串中。

"/schedule/shift/${shift.id}"

预期结果是:

"/schedule/shift/288aa888-2380-4290-affe-510355265a6d"

但不知怎的,它用整个对象替换了

shift
并忽略了.id,导致了这个结果:

"/schedule/shift/{Shift(id=288aa888-2380-4290-affe-510355265a6d, username=guus, start=2025-01-24T19:00, end=null, canceled=false, user=User(username=guus, name=Guus, isAdmin=true)).id}"

这是怎么回事?

string kotlin string-interpolation data-class
1个回答
0
投票

问题中的代码看起来不错并且按预期工作。您可以通过创建一个新项目自行尝试,然后复制问题中的代码。

您的实际代码,但是,

$
符号在字符串模板中向右移动了一个字符:

"/schedule/shift/{$shift.id}"

这是您观察到的结果如何发生的唯一解释。只需在代码中搜索

{$
即可找到罪魁祸首,并将
$
符号移到大括号之外。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.