gpt4 book ai didi

scala - 如何在 Scala 中匹配函数的类型参数

转载 作者:行者123 更新时间:2023-12-04 06:01:52 24 4
gpt4 key购买 nike

我想做这样的事情:

implicit class MyString(s: String) {
def getAs[T]: T = {
T match {
case q if q == classOf[Int] => s.toInt
case q if q == classOf[Boolean] => s.toBoolean
}
}
}

当然,这不会编译。我该如何编写才能做到这一点?

最佳答案

考虑这种方法:

object Parse {
def parse[T](f:String => Option[T]) = f
implicit val parseInt = parse(s => Try(s.toInt).toOption)
implicit val parseLong = parse(s => Try(s.toLong).toOption)
implicit val parseDouble = parse(s => Try(s.toDouble).toOption)
implicit val parseBoolean = parse(s => Try(s.toBoolean).toOption)
}

implicit class MyString(s:String) {
def getAs[T]()(implicit run: String => Option[T]): Option[T] = run(s)
}

用法:

def main(args: Array[String]) {
import Parse._
"true".getAs[Boolean].foreach(println)
"12345".getAs[Int].foreach(println)
}

关于scala - 如何在 Scala 中匹配函数的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33644293/

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