Scala io.source类v对象

时间:2015-02-06 09:37:29

标签: scala class object io

我按照以下示例进行操作。

在包IO的scala文档中,有一个由O和C表示的源类和源对象。有人可以解释一下这个区别吗?

我想"导入scala.io.source"导入源类?但是fromfile方法是源对象的一部分吗?

例如,源类具有addString()方法,源对象具有fromFile()方法。你什么时候使用哪个?

由于

import scala.io.Source

object Test {
def main(args: Array[String]) {
  println("Following is the content read:" )

  Source.fromFile("test.txt" ).foreach{ 
     print 
  }
}
}

2 个答案:

答案 0 :(得分:1)

对象和类是或多或少独立的事物碰巧具有相同的名称(有一些小的东西,如隐式解决方案,其中“伴侣对象”是特殊的)。 Scala允许您拥有一个具有相同名称的类型和值,因为它总是可以从上下文中分辨出您的意思:

class Foo {
  type Bar = Int
  val Bar = "Hello"
}
val foo = new Foo
type baz = foo.Bar
val quxxl = foo.Bar

由于它们具有相同的名称,导入Source恰好导入它们。

根据您的示例,您可以像使用任何其他object Source一样使用object。您像使用任何其他class Source一样使用class

val s: Source = ...
s.addString(...)

(请注意,如果您想引用object Source类型,那就是Source.type - 这与任何其他object没有区别(例如Nil的类型为Nil.type;没有名为plain Nil的类型。这只是有点混乱,因为 是一种名为Source的类型 - class Source

的实例类型

答案 1 :(得分:0)

在scala中,类可以有companion object,它包含类的静态方法和字段。 scala中没有静态关键字。伴随对象不是Source类。