4

Scalaで次のことが可能かどうか知りたいです(ただし、この質問はJavaにも適用できると思います)。

  • Scalaファイルを動的に作成します(わかりました、ここでは問題ありません)
  • コンパイルします(これは実際の問題ではないと思います)
  • 新しいクラスを動的にロード/アンロードします

動的なコードのロード/リロードが可能かどうかを知ることは別として(Javaで可能であるため、Scalaでも可能だと思います)パフォーマンスの低下という観点からこれが意味することも知りたいです(名前は衝突しますが、実際にはそれらの多くです!)。

TIA!

PS:Scalaでのクラスのロードに関する他の質問が存在することは知っていますが、パフォーマンスに関する答えを見つけることができませんでした!

4

2 に答える 2

2

はい、あなたがやりたいことはすべて確かに可能です。Scalaソースコードを動的に作成する例であるScalaMockを見てみたいと思うかもしれません。そして、コードからコンパイラーを呼び出す例であるSBTで。そして、クラスを動的にロードするさまざまなシステムがあります。開始点として、loadLibraryのドキュメントを参照してください。

ただし、達成したいことによっては、代わりにScalaマクロを確認することをお勧めします。これらは、ソースコードを生成してコンパイルする場合と同じ種類の柔軟性を提供しますが、そのアプローチの多くの欠点はありません。ScalaMockの元のバージョンは、以前はソースコードを生成することで機能していましたが、代わりにマクロを使用するように移行中です

于 2012-06-29T17:06:24.840 に答える
2

REPL で明確に示されているように、Scala ではすべて可能です。Scala 2.10 では比較的簡単ですらあります。

于 2012-06-29T17:09:25.943 に答える