如何从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]
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)