在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中随处可见
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读