我有下面的Scala代碼片段:爲什麼在Scala中調用這樣的函數?
type Set = Int => Boolean
def contains(s: Set, element:Int): Boolean = s(element)
def singletonSet(element: Int): Set = Set(element)
val oneElementSet = singletonSet(5)
contains(oneElementSet, 5) // true
contains(oneElementSet, 6) // false
我試圖環繞這是什麼一樣我的頭:集(元素)。看起來它會替換元素來代替Int參數,以產生此:5 =>布爾值。在任何地方都沒有比較,那麼爲什麼oneElementSet(5)返回true,而oneElementSet(6)返回false?
謝謝!
您可以檢查定義了'singletonSet'返回的'Set'的完整包嗎?我想你只是使用'scala.collection.immutable'下的普通'Set',嘗試設置'type Set = Int => Int',如果你的代碼仍然有效,那麼你並沒有真正使用'Set'但是'scala.collection.immutable'下的一個。 – Peter
這看起來像coursera FunProg。我會爲Set類型使用不同的名稱以避免與'scala.collection.immutable.Set'發生衝突。執行如下操作:'type MySet = Int => Boolean'並且它不應該工作。從練習的角度來看,單身套裝的impl是錯誤的。提示:應該使用函數定義來實現'singletonSet':Int => Boolean' – maasg
這確實來自Coursera的'Scala語言功能編程'課程。感謝您的提示;) – MaxK