gpt4 book ai didi

Scala 将 Any 转换为 Option[T]

转载 作者:行者123 更新时间:2023-12-02 15:12:51 24 4
gpt4 key购买 nike

类似于:

  def cast[T](o: Any): Option[T] = o match {
case v: T => Some(v)
case _ => None
}

或:

  def cast[T](c: Class[T], o: Any): Option[T] = o match {
case v: T => Some(v)
case _ => None
}

这是个好主意吗?是否有等效的标准库?

我为什么会收到以下 Scala 编译器警告以及如何解决:

Warning:(7, 13) abstract type pattern T is unchecked since it is eliminated by erasure
case v: T => Some(v)

最佳答案

使用类标签。类型信息在运行时会丢失。因此,您需要提供类型信息,这可以使用类标记来完成。

import scala.reflect.ClassTag

def cast[T: ClassTag](o: Any): Option[T] = o match {
case v: T => Some(v)
case _ => None
}

Scala REPL

scala> cast[String]("hello")
res2: Option[String] = Some(hello)

scala> cast[Int]("scala")
res3: Option[Int] = None

关于Scala 将 Any 转换为 Option[T],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42539645/

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