【发布时间】:2014-07-26 15:06:37
【问题描述】:
我有以下 Scala 代码 sn-p:
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
我正试图理解它的作用:Set(element)。看起来它会用 element 代替 Int 参数来产生:5 => Boolean。哪里都没有比较,为什么oneElementSet(5)返回true,oneElementSet(6)返回false?
谢谢!
【问题讨论】:
-
您能否检查定义
singletonSet返回的Set的完整包?我认为您只是在scala.collection.immutable下使用普通的Set,尝试设置type Set = Int => Int,如果您的代码仍然有效,那么您并没有真正使用您定义的Set,而是scala.collection.immutable下的那个。 -
这看起来像 coursera FunProg。我会为 Set 类型使用不同的名称以避免与
scala.collection.immutable.Set发生冲突 执行以下操作:type MySet = Int => Boolean它应该不起作用。从练习的角度来看,单例集的 impl 是错误的。提示:singletonSet应该使用手头的函数定义来实现:Int => Boolean -
这确实来自 Coursera 上的“Scala 函数式编程”课程。感谢您的提示;)
标签: scala functional-programming