gpt4 book ai didi

scala - 如何隐式地使用方法名称查找到类型的转换?

转载 作者:行者123 更新时间:2023-12-01 11:48:26 25 4
gpt4 key购买 nike

在另一个答案中here他们给出了以下代码示例:

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 部分,用作类型表达式。这是在定义某种匿名类型吗?

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

最佳答案

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

但该策略将以其他方式起作用:

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

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

关于scala - 如何隐式地使用方法名称查找到类型的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com