如何从Scala中的字符串创建集合

如何从Scala中的字符串创建集合,scala,set,Scala,Set,从这样的字符串创建集合最有效的方法是什么 val string = "Set(1,3,3,4,5)" val mySet = string.toSet[Int] res0: Set[Int] = Set(1,3,4,5) 我想创建这个toSet方法 implicit class StringWithToIntSet(val self: String) extends AnyVal { def toIntSet: Set[Int] = { val Re = """Set\((.*

从这样的字符串创建集合最有效的方法是什么

val string = "Set(1,3,3,4,5)"

val mySet = string.toSet[Int]
res0: Set[Int] = Set(1,3,4,5)
我想创建这个
toSet
方法

implicit class StringWithToIntSet(val self: String) extends AnyVal { 
  def toIntSet: Set[Int] = {
    val Re = """Set\((.*)\)""".r
    self match { 
      case Re(inner) => inner.split(",").map(_.toInt).toSet
    }
  }
}
然后:

注:

  • 不能调用它,因为
    String
    已经有
    toSet
    方法(创建
    Set[Char]
然后:

注:

  • 您不能将其称为
    toSet
    ,因为
    String
    已经有了
    toSet
    方法(该方法创建了
    Set[Char]

高效是指“我的时间很宝贵”还是“这在我启用谷歌的眼镜上运行,所以我无法运行编译器来完成”?高效是指“我的时间很宝贵”还是“这在启用谷歌的眼镜上运行,所以我无法运行编译器来完成”?在任何情况下,对于这样一个简单的情况,您都不会使用隐式吗?我通常认为在复杂度增加和方法位置模糊的情况下,使用隐式方法会被许多使用点的简化所抵消。相反,这种用法在我看来是强迫性的——“拿着锤子的人”。不过,你显然比我做的Scala多得多!我同意
toIntSet
可能不是隐式语法的好候选,因为它可能只在一个地方使用。一个简单的私有方法只需添加一个额外的字符:
toIntSet(“Set(1,3,3,4,5)”)
。对我来说,这种方法的来源可能太多了。除此之外,我认为
toIntSet
在字符串上感觉不正确,因为它要求字符串具有特定的内容。然而,我想这是非常私人的。一个旁注:如果模式不匹配,实现将失败。是否有任何情况下,您不会对这样一个简单的情况使用隐式?我通常认为在复杂度增加和方法位置模糊的情况下,使用隐式方法会被许多使用点的简化所抵消。相反,这种用法在我看来是强迫性的——“拿着锤子的人”。不过,你显然比我做的Scala多得多!我同意
toIntSet
可能不是隐式语法的好候选,因为它可能只在一个地方使用。一个简单的私有方法只需添加一个额外的字符:
toIntSet(“Set(1,3,3,4,5)”)
。对我来说,这种方法的来源可能太多了。除此之外,我认为
toIntSet
在字符串上感觉不正确,因为它要求字符串具有特定的内容。然而,我想这是非常私人的。附带说明:如果模式不匹配,实现将失败。
scala> "Set(1,3,3,4,5)".toIntSet
res0: Set[Int] = Set(1, 3, 4, 5)