Scala String формат именованных параметров (Победитель: самый уродливый код) - PullRequest
3 голосов
/ 28 апреля 2011

Я придумал способ использовать именованные параметры в Scala.Есть ли способ лучше?Каковы недостатки?

<x>
  |CREATE OR REPLACE FUNCTION myFunction({columns.map(column => column.name).
                                          mkString(",\n")})
  |RETURNS BOOLEAN AS $$
  |BEGIN
  | -- more stuff
  |END;
  |$$ LANGUAGE 'plpgsql';
  |</x>.text.stripMargin

Остерегайтесь амперсандов в теле XML;они должны быть "указаны" как &amp; или помещены в фигурные скобки, такие как {"&"}.Получу ли я приз за самый уродливый код?: -)

Ответы [ 3 ]

2 голосов
/ 29 апреля 2011

Если вы не возражаете против плагина компилятора, попробуйте Johannes Rudolph Scala Enhanced Strings . Мне это очень нравится.

2 голосов
/ 01 августа 2013

Хорошие новости!В Scala 2.10.0 введена реальная, функциональная интерполяция строк!

Документы доступны здесь: http://docs.scala -lang.org / Overviews / core / string-interpolation.html

Вот краткий пример:

В Python я раньше делал такие вещи:

print "%(from)s -> %(to)s" % {"from": foo, "to": bar}

сейчас, в Scala 2.10.0+, мы можем это сделать!

val from = "Foo"
val to = 256
println(s"$from -> $to")  // Prints: Foo -> 256

Также имеется некоторая поддержка форматных строк, что довольно здорово:

val from = 10.00  // USD
val to = 984.30  // JPY
println(f"$$$from%.2f -> $to%.2fJPY")  // Prints: $10.00 -> 984.30JPY

Поскольку второй пример имеет некоторую минимальную выразительность типов, он также дает нам некоторую базовую проверку типов!

val from = 10.00
println(f"$$$from%d") // <-- Type error! Found "Double", required "Int"!
2 голосов
/ 28 апреля 2011

Я думаю, что если вам нужен формататор строк в этом масштабе, вам нужен Builder или шаблонизатор, например Velocity . Кстати, я обнаружил, что Scala хорош для строителей и DSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...