问题标签 [extractor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7753 浏览

scala - 用提取器替换案例类继承,在 Scala 中保留详尽性检查

我有一个简单的类层次结构,它表示一个类似图形的结构,其中包含使用案例类实现的几种不同类型的顶点:

这允许我编写这样的匹配块:

或像这样:

请注意,此实现具有以下属性:

1) 它允许编写区分弧和顶点的匹配块,但不能区分特定的顶点类型,但也允许编写区分顶点类型的匹配块。

2) 在特定于顶点类型和非特定于顶点类型的匹配块中,检查模式匹配的穷举性。

但是,不推荐从案例类继承,并且编译器建议使用提取器来支持非叶节点上的匹配(即,在上面的示例中,区分弧和顶点,但不区分顶点类型)。

问题:是否可以在不使用案例类继承的情况下实现类似的类层次结构,但在上面显示的两个用例中仍然由编译器执行模式详尽性检查?

编辑:我在 VertexType 类中添加了一个构造函数参数,以便不仅仅对类型执行匹配。

我当前没有案例类的实现如下:

和测试代码:

我希望在第二个块中出现关于非详尽匹配的警告(VertexType2 永远不会匹配),但没有一个。

实际上,2.9.0-RC3 之前的 Scala 编译器会产生我希望看到的警告,但以 RC3 开头的版本(包括 2.9.0 和 2.9.0-1)不会,这相当令人困惑。

0 投票
1 回答
538 浏览

scala - 自制提取器和案例类提取器的区别

根据 scala 规范,案例类构建的提取器如下(scala 规范§5.3.2):

出于实现原因,我希望能够在非案例类上模仿此提取器的行为。但是,我的实现无法重现相同的行为。

这是我有差异的一个例子:

我有以下警告:

请注意,警告仅在D案例中出现,而不是在案例类 textractor 案例中。您对警告的原因/我应该做些什么来避免这个警告有任何想法吗?

注意:如果你想在 REPL 中测试它,最简单的方法是:

  1. 激活未经检查的警告

    斯卡拉>:权力

    scala> settings.unchecked.value = true

  2. 在粘贴模式下复制上面的代码:

    斯卡拉>:粘贴

    [复制粘贴]

    [Ctrl + D]

编辑:正如安托拉斯所说,它应该是一个编译器错误,也许 scala 版本可能有用:scala 2.9.0.1(经过快速测试,scala 2.9.1RC2 中仍然存在)

0 投票
1 回答
2505 浏览

scala - Scala 替代案例将语法与不同类型的提取值匹配

该方法requiremain失败。
但是这个没问题

这是scala语言本身的限制还是我做错了

0 投票
1 回答
182 浏览

scala - 将订单与提取器匹配

我定义了一个自定义提取器来获取列表的最后一个元素,如https://stackoverflow.com/a/6697749/1092910

现在这匹配“好”:

但是如果我添加另一个子句,它现在突然匹配“坏”:

这种行为的原因是什么?

0 投票
4 回答
3459 浏览

regex - jmeter 从响应数据中获取值

我有一个关于从 Jmeter 中的 html 响应数据中获取某个值的问题。我一直在尝试正则表达式和 xpath 提取器(见下文),但没有运气。

这是我收到的响应数据的一部分:

我正在尝试获取案件编号。我一直在尝试正则表达式提取器:

但是得到了一个空值。

对于 xpath 提取器,我尝试了这个:

但它也不起作用。我一直在考虑使用 Beanshell 将源代码作为字符串抓取并解析数字。有没有更好的方法来获取这个数字?以及如何使用 beanshell 来抓取响应数据的源代码?我尝试使用 /html 的 xpath,但没有运气。

非常感谢

0 投票
3 回答
1842 浏览

scala - 使用 Scala 案例类建模

我正在尝试将来自 REST API 的响应建模为可以使用模式匹配的案例类。

我认为假设继承会很合适,但我发现这已被弃用。我知道已经存在与案例类和继承相关的问题,但我的问题更多是关于如何在没有继承的情况下在此处按照“正确方式”建模。

我从以下两个案例类开始,它们工作正常:

即 REST 调用将返回类似以下内容:

我可以像这样进行模式匹配:

等等,效果很好。

我遇到麻烦的地方是:我想要这些案例类的辅助扩展,例如:

这样我就可以像这样进行简化的模式匹配:

并且还允许我的 REST 代码直接使用和返回:

这更容易动态地建立响应。

所以...

我可以通过以下方式编译它(带有弃用警告):

但是,这似乎不适用于模式匹配。

关于这如何工作的任何想法?我对不同的方法持开放态度,但这是我为案例类寻找实际用途的尝试

0 投票
2 回答
4110 浏览

scala - Scala模式匹配变量绑定

为什么提取器返回时我不能以@样式绑定变量Option[<Type>]?即这个不起作用:

但这一个有效!

另一方面,如果IsUpperCase看起来像这样:

然后第一个示例有效,而第二个示例无效!为什么会这样?

0 投票
1 回答
123 浏览

maven - What are Maven plugin extractors?

In the configuration of a maven plugin's build, where you are specifying configuration for the "maven-plugin-plugin" there is something called an extractor. I also see it when building the plugin (Applying extractor for language: java).

In this page it specifies many different extractors, but doesn't give a very clear explanation of what they are?

0 投票
2 回答
1436 浏览

scala - 隐式参数不适用于 unapply。如何从提取器中隐藏无处不在的参数?

显然,提取器对象中的 unapply/unapplySeq 不支持隐式参数。假设这里有一个有趣的参数 a,以及一个令人不安的无处不在的参数 b,当提取 c 时,它会很好地隐藏起来。

[编辑]:似乎我的 intellij/scala-plugin 安装中出现了一些问题,导致了这种情况。我无法解释。我的智能最近遇到了许多奇怪的问题。重新安装后,我无法再重现我的问题。确认 unapply/unapplySeq 确实允许隐式参数!谢谢你的帮助。

这不起作用(**编辑:是的,确实如此):**

根据我对理想提取器应该是什么样子的理解,其中意图对于 Java 人员来说也很直观,这个限制基本上禁止了依赖于附加参数的提取器对象。

您通常如何处理此限制?

到目前为止,我有这四种可能的解决方案:

1)我想改进的最简单的解决方案:不要隐藏b,提供参数b和a,作为元组形式的unapply的普通参数:

在客户端代码中:

我不喜欢它,因为这里有更多的噪音偏离将 a 解构为 c 很重要。此外,由于必须说服 Java 人员实际使用此 scala 代码,因此面临着一种额外的语法新颖性(元组大括号)。他们可能会得到反 scala 攻击“这都是什么?......为什么不首先使用正常方法并检查是否?”。

2) 在封装了对特定 B 的依赖的类中定义提取器,导入该实例的提取器。在导入站点对于 java 人来说有点不寻常,但是在模式匹配站点 b 被很好地隐藏了,并且直观地很明显会发生什么。我最喜欢的。我错过了一些缺点?

客户端代码中的用法:

3) 在客户端代码范围内声明提取器对象。b 是隐藏的,因为它可以在本地范围内使用“b”。妨碍代码重用,严重污染客户端代码(此外,在代码使用之前必须说明)。

4) 具有函数 B => C 的 unapply return 选项。这允许导入和使用依赖于参数的提取器,而无需将 b 直接提供给提取器,而是在使用时提供结果。Java 人可能对函数值的使用感到困惑,b 不是隐藏的:

然后在客户端代码中:

补充说明:

  • 正如这个答案所建议的,“视图边界”可能有助于让提取器与隐式转换一起工作,但这对隐式参数没有帮助。出于某种原因,我不喜欢使用隐式转换来解决。
  • 调查了“上下文边界”,但它们似乎有相同的限制,不是吗?
0 投票
0 回答
140 浏览

database - PDF文本提取器

我需要将存储在主要零售连锁店(例如家乐福、Lidl 等)的广告传单中的信息上传到数据库中。

我找到的最快的解决方案是:

  1. 我从主站点下载 PDF

  2. 我启动了一个名为 pic2filex 的程序,它立即从剪贴板保存图像

  3. 使用快照工具剪辑所有各种文章

  4. 启动一个程序,将图像加载到数据库中,并为每个插入产品名称和价格

有没有更快的方法?