作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要编写一个函数,该函数接受任意大小的字符串元组,在每个元素上调用trim,然后返回一个新的元组。我在下面的这一点有点卡住,代码已经不安全。另外,一旦将其转换为迭代器,我不知道如何返回元组。有没有更优雅的方法来解决这个问题?解决方案需要在Scala 2.9.2上运行
def trim(input:Product)={
input.productIterator.asInstanceOf[Iterator[String]].map(_.trim)
}
最佳答案
如果您愿意使用使用Shapeless的解决方案,那么这非常简单(至少在Shapeless方面):
import shapeless._
object trimmer extends (String -> String)(_.trim)
def trim[T <: Product, L <: HList](t: T)(implicit
hlister: HListerAux[T, L],
toList: ToList[L, String],
mapper: MapperAux[trimmer.type, L, L],
tupler: TuplerAux[L, T]
) = hlister(t).map(trimmer).tupled
scala> trim((" a ", "b ", " c"))
res0: (String, String, String) = (a,b,c)
scala> trim((" a ", "b ", " c", "d"))
res1: (String, String, String, String) = (a,b,c,d)
String
元素的元组输入,则在编译时会出现错误。
关于scala - Scala:如何在Tuple的每个元素上调用trim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16471718/
我是一名优秀的程序员,十分优秀!