たとえば、パッケージcom.example.a.b.c
の下に大量のケースクラスを持つScalaプロジェクトがあるとします。これらのクラスをすべてcom.example.c
パッケージにインポートしたいので、私のプロジェクトの他の場所では、com.example.c
とcom.example.a.b.c
のすべてのケースクラスを使用する必要があります。import com.example.c._
のみです。パッケージを別のものとしてインポート
どうすればいいですか?
たとえば、パッケージcom.example.a.b.c
の下に大量のケースクラスを持つScalaプロジェクトがあるとします。これらのクラスをすべてcom.example.c
パッケージにインポートしたいので、私のプロジェクトの他の場所では、com.example.c
とcom.example.a.b.c
のすべてのケースクラスを使用する必要があります。import com.example.c._
のみです。パッケージを別のものとしてインポート
どうすればいいですか?
エクスポートのメカニズムを追加することについての議論がありますが、それが起こるかどうかは不明です。いずれの場合においても
は、今のところ唯一の方法は
、例えばだからすべてのオブジェクトに等しいヴァルを設定し、すべてのクラスの種類
package bar
case class Foo(i: Int) {}
は別のパッケージで模倣する必要があります。
package object baz {
type Foo = bar.Foo
val Foo = bar.Foo
}
これに直面すると、通常、余分なインポートが2回かかります。
ありがとうRex!受け入れられる!私は余分な輸入が簡単な解決であることに同意しますが、どこにでもこれらが必要なときには本当に苦痛で、4つの余分な輸入明細書で終わることになります。そしてメンテナンスのために、私はむしろ単一の場所で急激な変化を起こしたいと思います。 – user510159
scalaのimport文は、コンパイラが物理的にヘッダファイル全体をコピーするC/C++の#includeディレクティブとは異なり、javaのような他のクラスをどこに見つけるかコンパイラに指示します。 com.example.a.b.c
のケースクラスを使用する場合は、これを従来通りの方法で独自のパッケージからインポートする必要があります。
あなたは論理的な方法でコードを整理しようとしていますが、あなたは組織を管理できますか?もしそうなら、 'com.example.a.b.c'の大文字小文字のクラスを特性(または特性)で定義し、' package objects c extends ThatTrait'と書くことができます。 Scalazは、このアプローチを広く使用しています。 –
これは興味深いアプローチです!実際には 'com.example.a.b.c'を制御できないので、チームと議論しなければなりません。 – user510159