Я ищу идиоматический способ scala для форматирования строки с именованными аргументами. Я знаю формат String метода, но он не позволяет указывать именованные аргументы, доступны только позиционные.Строковый формат с именованными значениями
Простой пример:
val bob = "Bob"
val alice = "Alice"
val message = "${b} < ${a} and ${a} > ${b}"
message.format(a = alice, b = bob)
Определение сообщения как отдельное значение имеет решающее значение, так как я хочу, чтобы загрузить его из файла ресурсов и не указать в коде напрямую. Есть много похожих вопросов, на которые ответила новая функция scala, называемая String Interpolation. Но это не касается моего случая: я не мог позволить компилятору выполнять всю работу, так как файл ресурсов загружается во время выполнения.
Высматривайте, что это делает, когда 'Алис = "$ {Ь}"'. –
Хорошая точка @ChrisMartin, чтобы сделать ее более надежной, можно было бы вставить \\ для выхода из $ и \ (... и других?) В значения переменных перед выполнением подстановки. – wwkudu
Он также случайно приводит к тому, что некоторые из подстановок являются транзитивными. '$ {a}' изменяется на '$ {b}', а затем '$ {b}' изменяется на 'Bob'. –