6

パッケージの下にたくさんのケースクラスがあるScalaプロジェクトがあるとしましょうcom.example.a.b.c。これらすべてのクラスをパッケージ(競合しないケースクラスがさらにいくつか含まれている)にインポートして、プロジェクトの他の場所で、fromと。の両方のすべてのケースクラスを使用するcom.example.cだけでよいようにします。import com.example.c._com.example.ccom.example.a.b.c

どうやってやるの?

4

2 に答える 2

8

あなたが望むことをするエクスポートメカニズムを追加することについての議論がありますが、それが起こるかどうかは明らかではありません。

いずれにせよ、今のところ唯一の方法は

  • すべてのクラスのタイプを定義する
  • すべてのオブジェクトに等しい値を設定します

たとえば、

package bar
case class Foo(i: Int) {}

別のパッケージで模倣する必要があります

package object baz {
  type Foo = bar.Foo
  val Foo = bar.Foo
}

これに直面したとき、人々は通常、1つか2つの追加の輸入品で解決します。

于 2012-12-11T23:25:41.040 に答える
1

scalaのimportステートメントは、コンパイラがヘッダーファイル全体を物理的にコピーするC / C ++の#includeディレクティブとは異なり、javaのように他のクラスを見つける場所をコンパイラに指示するだけです。からのケースクラスを使用する場合com.example.a.b.cは、これが従来の方法であるため、独自のパッケージからインポートする必要があります。

于 2012-12-11T22:51:41.443 に答える