2

ここでの別の回答では、次のコード例を示しています。

scala> implicitly[Int => { def min(i: Int): Any }]
res22: (Int) => AnyRef{def min(i: Int): Any} = <function1>

それは私のscalaコンソール(2.10.0-RC2)では機能しません。

scala> implicitly[Int => { def min(i: Int): Any }]
<console>:8: error: No implicit view available from Int => AnyRef{def min(i: Int): Any}.
          implicitly[Int => { def min(i: Int): Any }]
                    ^
scala> 12 min 11
res15: Int = 11

それを行うための新しい方法は何ですか?そして、とにかくその構文はどういう意味ですか?私はそれをよく知らない-具体的には{ def min(i: Int): Any }、型式として使用される部分。それはある種の匿名タイプを定義していますか?

これを実行したいのは、コードで暗黙の変換を確認し、それがどこからインポートされたのかわからない場合に追跡したいからです。たとえば、先日、を持たないを呼び出しformatているコードを見ました。どのインポートが変換に引き込まれたのかわかりませんでした。 java.util.Dateformat

4

1 に答える 1

5

は値クラスであるminため、検索することはできません(構造型では機能しません。これは、である必要があります)。RichIntAnyRef

しかし、戦略はそれ以外の場合は機能します。

scala> implicitly[Option[Int] => { def iterator: Iterator[Int] }]
res29: Option[Int] => AnyRef{def iterator: Iterator[Int]} = <function1>

したがって、同じトリックが機能しますが、値クラスでは機能しません。代わりにIDEを試してください。

于 2012-12-07T17:31:52.947 に答える