scala - 创建未命名的隐式类或函数

标签 scala function class implicit anonymous-methods

是否可以在 Scala 中创建未命名的隐式类或函数?

例如,如果我有以下隐式类:

implicit class ListIntExtras(list: List[Int]) {
  def average = list.sum / list.size
}

我更希望能够将其定义为诸如隐式类_(list: List[Int])之类的东西,因为类ListIntExtras的名称实际上从来都不是在任何地方都可以使用。

对于隐式函数也是如此:

implicit def intToDouble(i: Int): Double = i.toDouble

我想将该方法定义为 implicit def _(i: Int): ... 因为我从来没有引用它的实际名称。

我知道这对于隐式 val 是可能的。例如,您可以执行 implicit val _ = new Config() ,这很有用,因为将其命名为 _ 之外的任何内容似乎都是一种浪费,因为它永远不会被引用名称。

最佳答案

Scala 3 (Dotty) 提供专用 extension methods例如,有效避免为隐式类命名的语法

scala> extension (list: List[Int])
     |       def average = list.sum / list.size
     |
def extension_average(list: List[Int]): Int

scala> List(1, 41).average
val res0: Int = 21

关于scala - 创建未命名的隐式类或函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35758131/

相关文章:

scala - 更改 sbt 任务中的设置

scala - 如何将我的Spray API部署到生产中?

javascript - 冒号在javascript函数参数中做什么

Java:在运行时检查类是否存在

c++ - 对类中结构的 C++ vector 进行排序

scala - Scala 中的参数省略/推理

scala - 如何将 Scala Spark Dataset.show 重定向到 log4j 记录器

javascript - 使用 "bind"创建时保留函数属性

javascript - 从 ID 调用函数

c++ - 许多具有相同构造函数的类