是否可以动态解包列表/元组/映射项作为Scala中函数的参数?我正在寻找一个Scala相当于Python的args/ kwargs.
例如,在Python如果一个函数定义为def foo(bar1, bar2, bar3=None, bar4=1)再给予一个列表x=[1,7]和字典y={'bar3':True, 'bar4':9}可以调用foo的foo(*x, **y).
我正在尝试编写一个泛型方法来迭代案例类的字段:
case class PriceMove(price: Double, delta: Double)
def log(pm : PriceMove) { info("price -> " + price + " delta -> " + delta)}
我需要log能够处理任何案例类.什么只需要log处理case类的参数类型和实际的泛型字段迭代代码?
从JSON序列化为案例类时,Play的JSON序列化默认是允许的.例如.
case class Stuff(name: String, value: Option[Boolean])
implicit val stuffReads: Reads[Stuff] = (
( __ \ 'name).read[String] and
( __ \ 'value).readNullable[Boolean]
)(Stuff.apply _)
Run Code Online (Sandbox Code Playgroud)
如果收到以下JSON:
{name: "My Stuff", value: true, extraField: "this shouldn't be here"}
Run Code Online (Sandbox Code Playgroud)
它将通过'JsSuccess'成功并丢弃'extraField'.
有没有办法构造Json Reads函数,以便在存在"未处理"字段时返回JsError?