12

我刚刚开始使用 Play2,我正在努力使用 scala。

在一个视图中,我有这个简单的表单助手来创建一个新闻项目。

@textarea(
  newsItemForm("content"),
  '_label -> "Content",
  'rows -> 3,
  'cols -> 50,
)

现在我想将 a 添加data-wysiwyg到属性中,但由于它包含 - scala 抱怨 - 不是 Symbol 的成员。

因为'这只是编写 Symbol("data-wysiwyg") 的一种好方法,我可以让它工作,但是我的视图看起来很难看,因为一些属性被指定了,Symbol而另一些属性被指定了'

我的问题是:有没有办法将 scala'表示法用于 html5data-属性?

4

2 回答 2

9

我认为这是不可能的,因为破折号将被解释为减号。如果是为了缩短声明,为什么不在s字符串中添加一个方法来生成相应的符号(类似于生成正则r表达式的方法)?

class SymbolString( str: String ) {
  def s = Symbol(str)
}

implicit def str2symstr( str: String ) = new SymbolString(str)

scala> "hello".s
res20: Symbol = 'hello

scala> "data-wysiwyg".s
res21: Symbol = 'data-wysiwyg
于 2012-04-12T14:29:16.460 回答
3

您还可以使用Symbol伴随对象的 apply 方法。我认为这更具可读性,因为它很明显您正在创建一个符号:

scala> Symbol("data-wysiwyg");
res0: Symbol = 'data-wysiwyg
于 2014-10-21T23:14:45.477 回答