gpt4 book ai didi

Scala:类型模式匹配的简写?

转载 作者:行者123 更新时间:2023-12-04 19:31:12 25 4
gpt4 key购买 nike

有没有更优雅的方式来做以下事情?

data match {
case e: SomeType => doSomethingWith(e)
case _ =>
}

寻找类似的东西:
data.ifInstanceOf[SomeType](doSomethingWith)

最佳答案

你想要一个表达还是只是执行一个副作用?如果只是通过“PimpMyLibrary”方法+反射的副作用:

  import scala.reflect.ClassTag

implicit class AnyOps(data : Any) {
def ifInstanceOf[A : ClassTag](f: A => Unit) : Unit = {
val clzz = implicitly[ClassTag[A]].runtimeClass
if (clzz.isInstance(data)) f(data.asInstanceOf[A])
}
}

然后你可以试试
"abc".ifInstanceOf[String](println)
"def".ifInstanceOf[Integer](println)
1.ifInstanceOf[Integer](println)
2.ifInstanceOf[String](println)

如果你想要一个表达式,我认为最好的方法是添加一个额外的类型参数 B 并返回Either[B, Anyref]。

关于Scala:类型模式匹配的简写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28963546/

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