繁体   English   中英

"!" 是什么意思在scala中是什么意思?

[英]What does "!" mean in scala?

我正在查看一段代码,其中包含以下内容:

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

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

有什么作用! 在scala中是什么意思?

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

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

2.+(3)   // result is 5

当您编写2 + 3时,这实际上是上述表达式的语法糖。

任何类型都可以定义一个unary_! 方法,这就是!something得到的。 布尔值实现它,具有逻辑否定(“非”)的明显含义,感叹号在其他具有 C 遗产的语言中具有。

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

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

其中t是一个元组元组,第二个元素的第一个元素的类型实现unary_! 并且(根据.filter的要求)返回一个Boolean 我敢打赌我口袋里的钱,元素本身是一个Boolean ,在这种情况下! 只是“不”的意思。

正如罗伯特所说, ! 是一个方法名。 确定哪个可能很棘手! 方法正在使用。 例如,在代码行中:

val exitValue = command.!(ProcessLogger(stdoutWriter.println, stderrWriter.println))

其中commandString (或Seq ), command可以隐式转换为ProcessBuilder ,所以它的! 方法将适用。 您的 IDE 可能会提供帮助。 IntelliJ IDEA Ultimate 能够告诉我在哪里! 被定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM