【发布时间】:2019-09-23 08:43:57
【问题描述】:
我正在迁移到 Scala 2.13。
Play Twirl 模板中的args: (Symbol, String)* 给了我这个警告:
将显式数组值传递给 Scala varargs 方法已被弃用(自 2.13.0 起),并将导致防御性副本;使用更高效的非复制 ArraySeq.unsafeWrapArray 或显式 toIndexedSeq 调用
这是整个模板:
@(action: play.api.mvc.Call, args: (Symbol, String)*)(body: => Html)
<form method="@action.method"
@toHtmlArgs(args.toMap)>
@body
</form>
下面是这个函数的调用方式:
@helper.formRelative(action = ..., Symbol("id") -> "assignForm", Symbol("class") -> "ui form") { ..body.. }
由于我在很多地方都使用它,有没有在不更改签名的情况下解决此问题的方法?
我尝试了不同的方法,例如:
- 添加
toSeq:@toHtmlArgs(args.toSeq.toMap) - 同时删除
@toHtmlArgs(args.toMap)时会出现警告。
【问题讨论】:
-
看来问题不在于
toHtmlArgs,而在于调用模板的代码。 -
@YuvalItzchakov 我在我的问题中添加了一个关于如何使用此模板的示例。
标签: scala playframework twirl