问题标签 [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.
scala - 用提取器替换案例类继承,在 Scala 中保留详尽性检查
我有一个简单的类层次结构,它表示一个类似图形的结构,其中包含使用案例类实现的几种不同类型的顶点:
这允许我编写这样的匹配块:
或像这样:
请注意,此实现具有以下属性:
1) 它允许编写区分弧和顶点的匹配块,但不能区分特定的顶点类型,但也允许编写区分顶点类型的匹配块。
2) 在特定于顶点类型和非特定于顶点类型的匹配块中,检查模式匹配的穷举性。
但是,不推荐从案例类继承,并且编译器建议使用提取器来支持非叶节点上的匹配(即,在上面的示例中,区分弧和顶点,但不区分顶点类型)。
问题:是否可以在不使用案例类继承的情况下实现类似的类层次结构,但在上面显示的两个用例中仍然由编译器执行模式详尽性检查?
编辑:我在 VertexType 类中添加了一个构造函数参数,以便不仅仅对类型执行匹配。
我当前没有案例类的实现如下:
和测试代码:
我希望在第二个块中出现关于非详尽匹配的警告(VertexType2 永远不会匹配),但没有一个。
实际上,2.9.0-RC3 之前的 Scala 编译器会产生我希望看到的警告,但以 RC3 开头的版本(包括 2.9.0 和 2.9.0-1)不会,这相当令人困惑。
scala - 自制提取器和案例类提取器的区别
根据 scala 规范,案例类构建的提取器如下(scala 规范§5.3.2):
出于实现原因,我希望能够在非案例类上模仿此提取器的行为。但是,我的实现无法重现相同的行为。
这是我有差异的一个例子:
我有以下警告:
请注意,警告仅在D
案例中出现,而不是在案例类 textractor 案例中。您对警告的原因/我应该做些什么来避免这个警告有任何想法吗?
注意:如果你想在 REPL 中测试它,最简单的方法是:
激活未经检查的警告
斯卡拉>:权力
scala> settings.unchecked.value = true
在粘贴模式下复制上面的代码:
斯卡拉>:粘贴
[复制粘贴]
[Ctrl + D]
编辑:正如安托拉斯所说,它应该是一个编译器错误,也许 scala 版本可能有用:scala 2.9.0.1(经过快速测试,scala 2.9.1RC2 中仍然存在)
scala - Scala 替代案例将语法与不同类型的提取值匹配
该方法require
将main
失败。
但是这个没问题
这是scala语言本身的限制还是我做错了
scala - 将订单与提取器匹配
我定义了一个自定义提取器来获取列表的最后一个元素,如https://stackoverflow.com/a/6697749/1092910:
现在这匹配“好”:
但是如果我添加另一个子句,它现在突然匹配“坏”:
这种行为的原因是什么?
regex - jmeter 从响应数据中获取值
我有一个关于从 Jmeter 中的 html 响应数据中获取某个值的问题。我一直在尝试正则表达式和 xpath 提取器(见下文),但没有运气。
这是我收到的响应数据的一部分:
我正在尝试获取案件编号。我一直在尝试正则表达式提取器:
但是得到了一个空值。
对于 xpath 提取器,我尝试了这个:
但它也不起作用。我一直在考虑使用 Beanshell 将源代码作为字符串抓取并解析数字。有没有更好的方法来获取这个数字?以及如何使用 beanshell 来抓取响应数据的源代码?我尝试使用 /html 的 xpath,但没有运气。
非常感谢
scala - 使用 Scala 案例类建模
我正在尝试将来自 REST API 的响应建模为可以使用模式匹配的案例类。
我认为假设继承会很合适,但我发现这已被弃用。我知道已经存在与案例类和继承相关的问题,但我的问题更多是关于如何在没有继承的情况下在此处按照“正确方式”建模。
我从以下两个案例类开始,它们工作正常:
即 REST 调用将返回类似以下内容:
我可以像这样进行模式匹配:
等等,效果很好。
我遇到麻烦的地方是:我想要这些案例类的辅助扩展,例如:
这样我就可以像这样进行简化的模式匹配:
并且还允许我的 REST 代码直接使用和返回:
这更容易动态地建立响应。
所以...
我可以通过以下方式编译它(带有弃用警告):
但是,这似乎不适用于模式匹配。
关于这如何工作的任何想法?我对不同的方法持开放态度,但这是我为案例类寻找实际用途的尝试
scala - Scala模式匹配变量绑定
为什么提取器返回时我不能以@样式绑定变量Option[<Type>]
?即这个不起作用:
但这一个有效!
另一方面,如果IsUpperCase
看起来像这样:
然后第一个示例有效,而第二个示例无效!为什么会这样?
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?
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 不是隐藏的:
然后在客户端代码中:
补充说明:
- 正如这个答案所建议的,“视图边界”可能有助于让提取器与隐式转换一起工作,但这对隐式参数没有帮助。出于某种原因,我不喜欢使用隐式转换来解决。
- 调查了“上下文边界”,但它们似乎有相同的限制,不是吗?
database - PDF文本提取器
我需要将存储在主要零售连锁店(例如家乐福、Lidl 等)的广告传单中的信息上传到数据库中。
我找到的最快的解决方案是:
我从主站点下载 PDF
我启动了一个名为 pic2filex 的程序,它立即从剪贴板保存图像
使用快照工具剪辑所有各种文章
启动一个程序,将图像加载到数据库中,并为每个插入产品名称和价格
有没有更快的方法?