Scala中的Tilde在Scalatra示例代码中找到

时间:2013-06-17 20:49:19

标签: scala scalatra

刚刚参加了这个示例代码,了解Scalatra中的命令:

 protected def handle: Handler  = {
    case c: CreateTodoCommand => 
      add(newTodo(~c.name.value))
  }

在这种特殊情况下,~~c.name.value的相关性究竟是什么?不知道在哪里可以找到关于这个特定符号的更多文档。

2 个答案:

答案 0 :(得分:7)

在Scala中:

~x

转换为

x.unary_~

(这也适用于+-!,如this post中所述。因此,您的示例转换为:

add(newTodo(c.name.value.unary_~))

因此可以在value的类型中找到文档。

答案 1 :(得分:0)

它似乎与此处注释的代码块有关:https://github.com/scalatra/scalatra/blob/2.2.x_2.9/core/src/main/scala/org/scalatra/package.scala

这是唯一一个可以在这里工作的一元波浪号运算符。其他人似乎主要是按位而不是运营商

实际上,这似乎也可能是scalaz库中的一些导入,因为缺少import语句。 〜选项[_]的类似用法也可以在其他地方找到......