Esta é uma questão puramente teórica, mas estou pensando se é possível alterar a maneira como os objetos são serializados em modelos de string como em "value: $value"
?
Com a pesquisa que fiz até agora, isso parece não ser possível, mas a sintaxe que eu tinha em mente seria algo como Context.run { "value: $value" }
, onde o contexto pode decidir como value
é serializado (por exemplo, tratamento especial para certas classes, strings de escape).
Aplicações seriam, por exemplo, construtores de uri ou qualquer outro contexto que requeira codificação. Não mais "https://www.example.com/?${key.toString().urlEscape()}=${value.toString().urlEscape()}"
, apenas UrlBuilder.run{ "https://www.example.com/?$key=$value" }
where urlEscape
é aplicado a todos os argumentos pelo construtor de url.
Estou realmente curioso sobre melhorias de sintaxe. Não tenho um problema ativo sem solução alternativa.
Isso não é possível. Da Especificação da Linguagem Kotlin .
Portanto, você não pode controlar isso de nenhuma outra forma a não ser substituindo
toString
a classe do valor interpolado.