9

重複の可能性:
Scala で文字列「+」演算子をインポート解除する方法は?

そのため、Predef からのものは scala プログラムに自動的にインポートされます。しかし、Predef からインポートされた特定の関数またはすべての関数を無効にしてインポートを解除するにはどうすればよいでしょうか? 例として、文字列の「+」演算子が気に入らない場合、この機能を無効にする方法を教えてください。

4

1 に答える 1

18

リンクされた回答で述べたように、メソッドString#+(other: Any)は、暗黙的な変換ではなく、コンパイラ マジックを使用して String クラスに追加されます。そのため、 の自動インポートとは関係ありませんPredef._

Int#+(x: String)、および他の値型の対応するメソッドにも同じことが当てはまります。

ただし、の暗黙的な変換によって追加される別の文字列連結メソッドがありPredefます。x + "2"として扱われPredef.any2stringAdd(x).+("2")ます。ファイルの最初の行で明示的にインポートPredefすることにより、不要なメンバーの名前を に変更して_無効にすることができます。

import Predef.{any2stringadd => _, _}

object Test {    
  object A
  A + "20" // error: value + is not a member of object Test.A
}

これが Scala Scripts や REPL で機能するとは思えません。-Yno-predef自動インポートをグローバルに無効にする、サポートされていないオプションもあります。

関連: SI-1931

于 2011-10-03T12:15:52.857 に答える