我想出了一个在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正文中的&符号;它们需要“引用”为&
或放在像{"&"}
这样的大括号中。我是否因为丑陋的代码而获奖? : - )
答案 0 :(得分:2)
答案 1 :(得分:2)
如果您不介意编译器插件,请尝试使用Johannes Rudolph的Scala Enhanced Strings。我很喜欢它。
答案 2 :(得分:2)
文档可在此处找到: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"!