问题标签 [unapply]

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 投票
1 回答
44 浏览

scala - 在没有案例类的情况下与 Nat 一起玩

我只是在 scala 中为 Naturals 创建了一个定义,还有一个 PLUS 操作:

对于 Succ 的定义,出于学习目的,我尽量不使用 Case 类。我的第一种方法是:

但是编译器给我一个错误

我为获取 X 做了一个明确的方法,它可以工作

为什么?

0 投票
1 回答
901 浏览

scala - 在 Scala Play 应用程序中避免此 java.lang.ClassCastException 错误的正确应用和取消应用方法是什么?

我正在构建一个 Scala Play 应用程序,其中事件和数据以 Json 格式保存,并且我正在尝试对用户及其分配的角色进行建模。我的想法是将角色建模为案例对象,因为每个标准角色只需要为应用程序中的所有用户定义一次,并且我想对分配给特定用户的角色类型进行模式匹配。到目前为止,我有这个;

如果我没有在 中定义 apply 和 unapply 方法object Role,并且仅依赖于使用的隐式值Json.format[Role],我会收到“未找到应用函数”或“未找到未应用函数”错误 - 所以我添加了它们,以尝试获取摆脱这个错误。

.asInstanceOf[Role]如果不添加到Roleapply 方法,我无法编译它。它现在可以编译,但是当我尝试使用设置role: RoleRegisteredUser实例的参数时,

创建了一个新RegisteredUser实例,其中角色属性被序列化为 Json;

"role":{"className":"models.Role$”}

但是当我尝试反序列化它时,我得到Exception in thread "pool-4868-thread-1" java.lang.ClassCastException: java.lang.Class cannot be cast to models.Role

我的目标是最终得到相同的RegisteredUser实例(或GuestUser实例),所以我可以在视图控制器中进行模式匹配,如下所示;

对此的任何帮助和建议将不胜感激。我在 Scala 和 Play 方面还不够熟练和知识渊博,无法知道我在建模用户和角色方面是否走在正确的轨道上。

0 投票
1 回答
607 浏览

scala - Scala 的头/尾提取器的时间和空间复杂度是多少?

这个的时间和空间复杂度是多少:

是否取决于实施Seq?既然IndexedSeq应该有O(1)tail vs O(n)for LinearSeqs?空间复杂度是O(n)因为递归调用堆栈还是 Scala 自动进行尾调用优化?

0 投票
1 回答
387 浏览

scala - Scala“提取器”可以在未应用时使用泛型吗?

我不能在unapply提取器的方法上使用泛型以及隐式“转换器”来支持特定于参数化类型的模式匹配吗?

我想做这个(注意使用[T]unapply了),

但我收到以下编译错误

Error: (25, 10) not found: type ExampleExtractor case ExampleExtractor[String] (x) => x ^

如果我只有一个隐式val范围并删除类型提示(见下文),它工作正常,但这会破坏对象。

0 投票
1 回答
342 浏览

maple - 为什么在通过 diff 定义函数时必须在 maple 中使用 unapply 运算符?

我是 Maple 的绝对初学者,在理解以下内容时遇到问题:

以下不起作用:

由于df_wrong(1);总是产生以下“错误,(在 df_wrong 中)无效输入:diff 收到 1,这对其第二个参数无效”。一段时间后,我发现以下解决了这个问题:

由于df_correct(1);. 谁能解释一下使用中的问题是什么df_wrong,也许为什么要unapply()解决这些问题?

我已经检查了 Maple 的解释unapply(),但不知何故对我来说仍然不是很清楚。

提前致谢!

0 投票
1 回答
476 浏览

scala - Scala取消应用方法

我试图了解 scala unapply 方法。

以下是我的理解。假设我有一个 Person 对象:

我认为这个案例的调用类似于:

但是当我有以下情况时,下面的 unapply 是如何工作的:

它如何在 unapply 方法中访问 fname("Magic") 的值并给我与第一个相同/正确的结果?

0 投票
1 回答
2790 浏览

scala - Scala - 不是案例类,也没有方法 .unapply

我对 Scala 很陌生,并且在以下代码中遇到了一些未解决的问题:

我收到以下错误:

错误:对象编号不是案例类,也没有 unapply/unapplySeq 成员

错误:未找到:值总和

如何解决它们?提前致谢

0 投票
2 回答
103 浏览

scala - 为什么我不能在不重复方法签名的情况下重用“取消应用”

以下 Scala 代码编译良好:

但是,如果我将提取器替换为:

然后编译失败:

为什么?从哪里来def isEmpty: Boolean

0 投票
3 回答
325 浏览

scala - Scala:不可参数化提取器的解决方法

由于提取器不能采用自定义参数(如Stack Overflow 中的回答:可以自定义提取器...),我尝试找到解决以下问题的替代方法。

我有很多可以组合的翻译。在我的代码片段中,维度可以与因子结合。例如"width multiplied by 2". 但它也可以是"width"(不相乘的)。而且还会有更多类似的案例。我尝试使用模式匹配对这些字符串输入进行分类。"width""width multiplied by x"应归类为“宽度”(key "w"),"height""height multiplied by x"归类为“高度”(key "h"),以此类推。

这应该由match以下示例代码片段中的最后一个完成,该示例代码片段将包含许多案例(示例代码片段中的 6 个),每个案例都应带有一个key: String参数("w", "h", "l", "r", "t", "b")。

我试图实现的是将密钥(即"w", "h", "l", "r", "t","b"等)传递给 case Untranslation(v)。但显然我不能这样做(该unapply函数可以采用隐式参数,但没有额外的显式参数)。

现在我尝试找到一种替代但仍然简洁的方式来对我的字符串输入进行分类。

0 投票
2 回答
47 浏览

scala - 没有参数的scala uanpply

我是一名在韩国学习 Scala 的学生。我正在学习模式匹配和取消应用方法。我感到困惑的是Emergency对象在 unapply 方法中有一个参数。当我不将参数放在匹配块中时,我不知道原因。