加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中废弃你的Boilerplate等价物?

发布时间:2020-12-16 19:14:07 所属栏目:安全 来源:网络整理
导读:Haskell有这个很酷的通用遍历,它允许你在集合中的每个节点上调用类似map的东西,无论是自下而上还是自上而下.它在任何地方都被调用,你可以做到像树一样的地方,你的树上每个节点都会调用f. 在Scala for Traversable中编写等效的东西很容易,但Haskell也可以用于
Haskell有这个很酷的通用遍历,它允许你在集合中的每个节点上调用类似map的东西,无论是自下而上还是自上而下.它在任何地方都被调用,你可以做到像树一样的地方,你的树上每个节点都会调用f.

在Scala for Traversable中编写等效的东西很容易,但Haskell也可以用于元组和等价的案例类,或者更普遍的是Scala所谓的Products.

您可以使用productIterator方法遍历Product中的元素,但是一旦您知道构造函数的参数(实际上,我猜应用方法)应该是什么,有一些简单的方法可以将元组或案例类重新组合在一起. ?

def mapOnProduct[X](f: X -> X,prod: Product) {
  val newArgs = prod.productIterator.map {
    case x: X => f(x)
    case id => id
  }.toList
  [?].apply(newArgs: _*)
}

我有什么可以替换[?]以便有机会工作?

谢谢!

解决方法

请参阅Miles Sabin的Shapeless Shapeless.有一个例子可以在 sybclass test中随处可见

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读