类型的含义Set = Int => Scala中的布尔值

Don*_*beo 9 scala

我不明白为什么Set以这种方式定义产生这些结果.

我的理解是,这Set只是一个接受int和返回布尔值的函数.

有人可以解释我为什么我用set得到这个结果?

我认为这是在Scala中表达函数的一种简短方法,但我是这种语言的新手,我不明白它是如何工作的.

object sets {
  type Set = Int => Boolean

    var a=Set(3)                              //> a  : scala.collection.immutable.Set[Int] = Set(3)
    a(2)                                      //> res0: Boolean = false
    a(3)                                      //> res1: Boolean = true
    a(1)                                      //> res2: Boolean = false
}
Run Code Online (Sandbox Code Playgroud)

izs*_*tas 11

您定义的类型type Set = Int => Boolean和您创建的对象var a=Set(3)实际上没有相互连接.即便如此:

scala> type Set = String
defined type alias Set

scala> val a = Set(3)
a: scala.collection.immutable.Set[Int] = Set(3)
Run Code Online (Sandbox Code Playgroud)

当你打电话时Set(3),你apply对象 Set上调用方法.如果您添加new关键字,则会考虑您的类型别名:

scala> val b = new Set()
b: String = ""
Run Code Online (Sandbox Code Playgroud)

a(2),a(3),a(1)工作,因为Set[A],实际上,确实实现A => Boolean的功能特点和apply方法等效于contains:http://www.scala-lang.org/api/2.10.3/index.html#scala.collection.immutable.Set

  • 那么你是说我只是使用了 Scala 语言中实现的 Set 而没有其他任何东西?那么第一行在我的代码中完全没用吗? (2认同)