Mercurial > hg > Blog
comparison content/Kotlin/multiline-strings.md @ 104:c56fdf7a343d
New blog post about Kotlin's multiline strings
author | Dirk Olmes <dirk.olmes@codedo.de> |
---|---|
date | Fri, 12 Jun 2020 12:56:06 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
103:6aa2fa328a94 | 104:c56fdf7a343d |
---|---|
1 Title: Kotlin multiline strings vs the $ character | |
2 Date: 2020-06-12 | |
3 Lang: en | |
4 | |
5 I recently started to use [Kotlin](https://kotlinlang.org/) for small projects at work. At first I was very pleased with the language but the more I use it the more I'm stubling over things that are not nice. | |
6 | |
7 I'll rumble about the braindead constructor syntax or the epic autoboxing fail with numbers some other time. Today I'll get into [multiline string templates](https://kotlinlang.org/docs/reference/basic-types.html#string-templates) and the use of the `$` character. | |
8 | |
9 Kotlin, much like [Groovy](https://groovy-lang.org/) supports multiline strings. It also allows the use of `$`-epxressions in the string. Things start to become difficult if you need a literal dollar sign in the string. | |
10 | |
11 Embedding literal dollar signs in Groovy multiline strings is easy: | |
12 | |
13 :::java | |
14 name = "Dirk" | |
15 template = """Hello $name, | |
16 I owe you \$100 | |
17 but I don't owe you the \$world""" | |
18 println(template) | |
19 | |
20 Just escape the dollar sign with `\` and you're good to go. | |
21 | |
22 Not so in Kotlin! Using a dollar sign that's escaped with backticks will fail compilation with "unresolved reference". The documentation talks about the "valid solution" for using dollar signs: | |
23 | |
24 ::java | |
25 fun main() { | |
26 val name = "Dirk" | |
27 val template = """Hello $name, | |
28 I owe you $100 | |
29 but I don't owe you the ${'$'}world""" | |
30 println(template) | |
31 } | |
32 | |
33 Note how you don't have to escape the dollar sign in front of the number and the awkward escaping syntax. | |
34 | |
35 [I'm not alone with this complaint](https://youtrack.jetbrains.com/issue/KT-2425) as the discussion on the ticket shows. IMHO it's not a good sign that boasts itself for "making developers happier" when little attention to this kind of details is shown. The ticket has been open for 8 years now ... | |
36 |