什么“!”斯卡拉意味着什么?

时间:2016-10-25 19:33:12

标签: scala

我正在查看以下代码:

graph.vertices.filter(!_._2._1)

我知道_中的scala是通配符,但我不知道!应该做什么。

!在scala中的含义是什么?

1 个答案:

答案 0 :(得分:10)

Scala在语法级别没有运算符。所有操作都是方法。

例如,语法中没有add运算符,但数字有+方法:

2.+(3)   // result is 5

当你写2 + 3时,上面的表达式实际上是语法糖。

任何类型都可以定义unary_!方法,这是!something被贬低的方法。布尔人实施它,具有明显的逻辑否定意义("不是")感叹号在其他语言中具有C遗产。

在您的问题中,表达式是以下调用的缩写形式:

graph.vertices.filter { t => !(t._2._1) }

其中t是一个元组元组,其中第二个元素的第一个元素具有实现unary_!的类型(根据{{的要求) 1}})返回.filter。我敢打赌口袋里的钱,元素本身是Boolean,在这种情况下, Boolean只是意味着"不是。"