- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚发现我的提取器中的 unapply 出于某种原因被调用了两次。任何人都知道为什么,以及如何避免它?
val data = List("a","b","c","d","e")
object Uap {
def unapply( s:String ) = {
println("S: "+s)
Some(s+"!")
}
}
println( data.collect{ case Uap(x) => x } )
这会产生输出:
S: a
S: a
S: b
S: b
S: c
S: c
S: d
S: d
S: e
S: e
List(a!, b!, c!, d!, e!)
最终结果很好,但在我的真实程序中,unapply 是非常重要的,所以我当然不想调用它两次!
最佳答案
collect 将 PartialFunction
作为输入。 PartialFunction
定义了两个关键成员:isDefinedAt
和 apply
。当 collect 运行您的函数时,它会运行您的提取器一次,以确定您的函数是否 isDefinedAt
某些特定输入,如果是,那么它会作为 apply
的一部分再次运行提取器提取值(value)。
如果有正确实现 isDefinedAt 的简单方法,您可以通过显式实现您自己的 PartialFunction 来自行实现,而不是使用 case 语法。或者你可以做一个 filter
然后 map
与集合上的总函数(这实际上是 collect 通过调用 isDefinedAt
所做的,然后应用
)
另一种选择是将部分函数提升
为总函数。 PartialFunction
定义将 PartialFunction[A,B]
转换为 A=>Option[B]
的 lift
。您可以使用这个提升函数(称它为 fun
)来执行:data.map(fun).collect { case Some(x) => x }
关于Scala Extractor unapply 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17049492/
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor类的一些代码示例,展示
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor类的一些代码示例,展示
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeTrendingExtractor类的一些代码示例,
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor类的一些代码示例,
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSubscriptionExtractor类的一些代
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeTrendingExtractor.getUrl()
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.getServi
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSubscriptionExtractor.()方法
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.fetchPage
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.getUrl()
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getName()
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeTrendingExtractor.getNextP
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor.getUrl()方法
本文整理了Java中org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getSubtitl
有什么方法可以使用由动态变量(例如 ${var})组成的正则表达式来设置正则表达式提取器。 问的理由是因为我的测试计划的一部分是从html响应中获取某个用户帐户的用户ID,因此后续Jmeter将继续以
我刚刚发现我的提取器中的 unapply 出于某种原因被调用了两次。任何人都知道为什么,以及如何避免它? val data = List("a","b","c","d","e") object Uap
我正在尝试遍历目录中的 50 多个文件。每个文件都有一些文本,我正在尝试使用 Yahoo Term Extractor 查找关键字.我能够从每个文件中提取文本,但我无法使用文本作为输入来迭代调用 AP
构造器模式和抽取器模式匹配有什么区别?在 Programming in Scala 中,作者区分了第 15 章中讨论的构造函数模式和第 26 章中讨论的提取器模式。 构造函数模式的例子: abstra
下面是示例 XML 片段,我试图从中筛选出符合以下两个条件的文章的 ID。目前,我可以在下面的表达式的帮助下为个别情况提取 ID 获取可用文章,Xpath2 表达式 = (//*//*//*//*[s
是否可以创建一个可以使用的 Extractor 对象,例如: val x = 42 x match { case GreaterThan(80) => println("5") case Gr
我是一名优秀的程序员,十分优秀!