1
爲什麼這個工程?在斯卡拉使用下劃線
def exists(s: Set, p: Int => Boolean): Boolean = { forall(s, !p(_)) }
而這不?
def exists(s: Set, p: Int => Boolean): Boolean = { forall(s, !p()) }
凡forall
是一個函數,而p
是謂語。
爲什麼這個工程?在斯卡拉使用下劃線
def exists(s: Set, p: Int => Boolean): Boolean = { forall(s, !p(_)) }
而這不?
def exists(s: Set, p: Int => Boolean): Boolean = { forall(s, !p()) }
凡forall
是一個函數,而p
是謂語。
對謂詞的調用需要傳遞一個參數,所以如果不傳遞任何東西(這就是p()
正在做什麼)就不能調用它。
下劃線是「當前值」的一種Scala short-hand,其中該值是要傳遞給p的Int。如果我們明確地將Int標記爲i
,則該脫糖爲:
{ forall(s, (i: Int) => !p(i)) }
p取參數。在一種情況下,你傳遞一個參數,而在另一種情況下你不傳遞一個參數。 – stonemetal