4

Eclipse を介して .scala ファイルの名前を変更すると、クラス名自体の名前は変更されません。

これは予想される動作ですか?何も壊れていないようです。

名前が変更されることを期待しています.Javaのバックグラウンドから来て、ファイル名/クラス名は互いに等しくなければなりません。

4

3 に答える 3

12

クラス名とファイル名の対応はscalaでは不要です。各 scala ファイルで複数の型を定義できます (通常はそうします)。コンパイラは、Java との相互運用性のために、型名に対応するファイル名を持つパブリック型ごとに異なる .class ファイルを作成しようとします (Java で直接対応しない複雑な型またはネストされた型の場合、scalac は .class を生成します。奇妙な/壊れた名前のクラスファイル...)

この通信が強制されない理由についてのいくつかのメモ (おそらく完全なリストではありませんが、アイデアを提供するためのものです):

  1. scalaの簡潔さを考えると、それは無駄です。case class Foo(foo:String)完全でやや洗練されたJavaクラスに対応していますが、それを独自のファイルに入れるのは無駄に思えます...
  2. コードの可読性が低下します。アクターに送信するさまざまなメッセージに (たとえば) 対応するケース クラスの階層を定義することがあります。それらを一緒にすることで、彼らの意図が強調されます。
  3. 多くの場合、それは無意味です。scala での比較的単純な定義はtrait Fooer {def foo="foo"}、特性の「デフォルト実装とのインターフェース」の性質を実装するさまざまな Java のような型に変換される可能性があります。これは、scala の構文で許可され、いくつかの一般的な scala パターンで使用される入れ子になったオブジェクト/クラス/型ではさらに悪化します。
  4. 実際には単一のファイルで複数のクラスを定義する必要がある Scala セマンティクス (特に封印された特性) があります (以下の @DaveGriffith のコメントへのクレジット)
于 2012-12-18T12:32:13.343 に答える
1

scala では、.scala ファイルに多くの (パブリック) クラスまたはパッケージを含めることができます。

于 2012-12-18T12:28:34.013 に答える
1

scala でのファイル名は、ファイル内のどのクラス名とも一致する必要はありません。scala ファイルには、必要な数のクラスを含めることができます。パッケージ構造もフォルダー構造と一致する必要はありませんが、一致させることをお勧めします。

于 2012-12-18T12:29:42.513 に答える