我正在查看以下代码:
graph.vertices.filter(!_._2._1)
我知道_
中的scala
是通配符,但我不知道!
应该做什么。
!
在scala中的含义是什么?
答案 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
只是意味着"不是。"