这纯粹是一个理论问题,但我想知道,是否有可能像在字符串模板中那样改变对象序列化的方式"value: $value"
?
根据我目前所做的研究,这似乎是不可能的,但我想到的语法将是类似的Context.run { "value: $value" }
,其中上下文可以决定如何value
序列化(例如对某些类的特殊处理、转义字符串)。
例如,应用程序可以是 uri 构建器或任何其他需要编码的上下文。不再有"https://www.example.com/?${key.toString().urlEscape()}=${value.toString().urlEscape()}"
,只有url 构建器会将UrlBuilder.run{ "https://www.example.com/?$key=$value" }
whereurlEscape
应用于所有参数。
我真的只是对语法改进感到好奇,我没有遇到没有解决方法的活跃问题。
这是不可能的。来自Kotlin 语言规范。
因此,您无法通过任何其他方式来控制它,只能
toString
在插值类中覆盖它。