Scala函数需要Symbol/Any instate Array/Sequence

myb*_*dur 2 scala playframework

我应该使用一个函数作为scala函数参数.该函数如下所示:

def apply(field: Field, options: Seq[(String, String)], args: (Symbol, Any)*)(implicit handler: FieldConstructor, lang: Lang): Html 
Run Code Online (Sandbox Code Playgroud)

args参数采用如下数组:

'_label -> "mylabel", '_showConstraints -> false, 'class -> "form-control"
Run Code Online (Sandbox Code Playgroud)

在play框架中,它看起来像这样:

@helper.select(myForm("fieldName"), options = options(MyObject.options), '_label -> "mylabel", '_showConstraints -> false, 'class -> "form-control")
Run Code Online (Sandbox Code Playgroud)

如何正确编写将项添加到数组的方法?像这样的东西:

@helper.select(callForm("callee"), options = options(LineDimension.options), args('_label -> "mylabel", '_showConstraints -> false, 'class -> "form-control"))
Run Code Online (Sandbox Code Playgroud)

功能:

@args(args: (Symbol, Any)*) = @{
    if (!filterEnabled) {
        args.add('disabled -> "disabled")
    }
    args
}
Run Code Online (Sandbox Code Playgroud)

播放控制台的错误消息是:

... type mismatch;
[error]  found   : Seq[(Symbol, Any)]
[error]  required: (Symbol, Any)
[error]             @helper.select(callForm("callee"), options = options(LineDimension.options), args('_label -> Messages.get("call.callee.choose"), '_showConstraints -> false, 'class -> "form-control"))
Run Code Online (Sandbox Code Playgroud)

ser*_*jja 5

使用 args(...): _*

@helper.select(callForm("callee"), options = options(LineDimension.options), args('_label -> Messages.get("call.callee.choose"), '_showConstraints -> false, 'class -> "form-control"): _*)
Run Code Online (Sandbox Code Playgroud)

编辑:

@args(args: (Symbol, Any)*) = @{
  if (!filterEnabled) {
    args :+ ('disabled -> "disabled")
  } else args
}
Run Code Online (Sandbox Code Playgroud)

然后像我上面提到的那样使用.