【问题标题】:Convert Option[Int] to String and back to Option[Int]将 Option[Int] 转换为 String 并返回 Option[Int]
【发布时间】:2020-05-28 12:33:43
【问题描述】:

我有一个将 Option[Int] 转换为字符串的 API。我想将其转换回 Option[Int]。在 Scala 中执行此操作的最佳方法是什么?

val x = Some(1)
val y = x.toString
val z: Option[Int] = ???  // Expected value is Some(1) from y

【问题讨论】:

  • 你为什么首先将它转换为字符串?您是否正在尝试序列化和反序列化某些数据?如果是这样,您可能会更好地使用某些标准格式而不是纯字符串。
  • @LuisMiguelMejíaSuárez 同意,在这种情况下字符串并不理想。我正在编写一个反序列化器,但我无法控制数据的序列化方式。

标签: scala


【解决方案1】:

在 Scala 2.13 中

y match { 
  case s"Some($x)" => x.toIntOption
  case _ => None
}

在 Scala 2.12 中

val someInt = """Some\((\d+)\)""".r
y match { 
  case someInt(x) => Try(x.toInt).toOption
  case _ => None
}

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多