[英]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))
其中command
是String
(或Seq
), command
可以隱式轉換為ProcessBuilder ,所以它的!
方法將適用。 您的 IDE 可能會提供幫助。 IntelliJ IDEA Ultimate 能夠告訴我在哪里!
被定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.