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

新的方法是什么?无论如何,这种语法是什么意思?我不熟悉它 - 特别是 part { def min(i: Int): Any },用作类型表达式。这是定义某种匿名类型吗?

我想这样做是因为当我在代码中看到隐式转换并且不知道它是从哪里导入时,我想追踪它。例如,前几天我看到一些调用formata 的代码java.util.Date,它没有format. 我不知道转换中拉入了哪个进口。

4

1 回答 1

5

你不会找到min,因为RichInt现在是一个值类(它不适用于结构类型——它必须是一个AnyRef)。

但该策略将在其他情况下起作用:

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

所以同样的技巧也能奏效,只是不适用于值类。请尝试使用 IDE。

于 2012-12-07T17:31:52.947 回答