Locked History Actions

Diff for "scala/packageObjects"

Differences between revisions 1 and 2
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
== パッケージオブジェクトが無い場合(2.7まで) == == パッケージオブジェクトの簡単な利用方法 ==

=
== パッケージオブジェクトが無い場合(2.7まで) ===
Line 25: Line 27:
== パッケージオブジェクトを使うと == === パッケージオブジェクトのある場合(2.8以降) ===

あたかもパッケージに直接記述できるかのようになる。

{{{
package object foo {
  type MOJI = String
  val SomeString = "hello world"
}
...
...
import foo._
object Sample {
  def main(args: Array[String]) {
    val a:MOJI = "Greeting:"
    println(a + SomeString)
  }
}
}}}
importする場合は、もはやクラス(オブジェクト)を指定する必要はなく、「import foo._」でよい。

パッケージオブジェクト

パッケージオブジェクトの簡単な利用方法

パッケージオブジェクトが無い場合(2.7まで)

すべてをクラス(オブジェクト)の中で定義するしかない。

package foo
object Foo {
  type MOJI = String
  val SomeString = "hello world"
}
....
....
import foo.Foo._
object Sample {
  def main(args: Array[String]) {
    val a:MOJI = "Greeting:"
    println(a + SomeString)
  }
}

上例では、例えばStringのエイリアスとしてMOJIを使いたいのだが、それはFooというオブジェクトの中に定義し、それを「import foo.Foo._」としてから使うしかない。

パッケージオブジェクトのある場合(2.8以降)

あたかもパッケージに直接記述できるかのようになる。

package object foo {
  type MOJI = String
  val SomeString = "hello world"
}
...
...
import foo._
object Sample {
  def main(args: Array[String]) {
    val a:MOJI = "Greeting:"
    println(a + SomeString)
  }
}

importする場合は、もはやクラス(オブジェクト)を指定する必要はなく、「import foo._」でよい。