簡體   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