Scala mapConserve用例
发布时间:2020-12-16 10:01:02 所属栏目:安全 来源:网络整理
导读:昨天我在SO: scala List map vs mapConserve发现了关于scala mapConserve的信息 我的问题是,有人想什么时候使用这种方法?提供的示例使用带有标识功能的mapConserve,我看不到它的用例… 编辑:在GitHub上快速搜索并找到了使用mapConserve的816个Scala代码块
昨天我在SO:
scala List map vs mapConserve发现了关于scala mapConserve的信息
我的问题是,有人想什么时候使用这种方法?提供的示例使用带有标识功能的mapConserve,我看不到它的用例… 编辑:在GitHub上快速搜索并找到了使用mapConserve的816个Scala代码块.其中许多(至少3页)是这段代码: def checkStackOverflow() = { var xs: List[String] = Nil for (i <- 0 until 250000) xs = "X" :: xs val lowers = xs.mapConserve(_.toLowerCase) assert(xs.mapConserve(x => x) eq xs) } 解决方法
这个问题引起了我的兴趣,所以我浏览了Scala代码库并查看了mapConserves()的实际用途.
在一些地方弹出的是:如果参数是部分函数,??则轻松跟踪地图操作是否已进行实际更改(通过简单的参考检查),如此示例中的Erasure: def squashBoxed(tp: Type): Type = tp.dealiasWiden match { case t @ RefinedType(parents,decls) => val parents1 = parents mapConserve squashBoxed if (parents1 eq parents) tp else RefinedType(parents1,decls) // ... 如果没有执行实际更改,则代码可以防止之后运行某种昂贵的操作. > ..更昂贵[1]:迭代两个列表并在之后比较它们的元素 [1]在特定情况下这是否显着取决于当然,在您优化之前通常会有疑问.一般来说,这种方法现在似乎较少使用,这可能是一种通常并不重要的赠品. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |