问题标签 [implicits]

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 回答
394 浏览

makefile - makefile 中的隐式规则

考虑以下生成文件:

make命令的输出是

还行吧。但是,如果生成文件是:

那么make命令的输出是

我希望它与第一个示例中的相同。为什么不一样?我在 makefile 的目录中有一个 foo.c 和 foo.z 文件。

0 投票
1 回答
2661 浏览

json - 播放 json 写入子类给出模棱两可的隐含值​​错误

我正在使用播放框架,并且有一个抽象类:

在伴生对象中有自己的隐式 JSON 编写器

我将这个抽象类子类化:

它的伴生对象中也有自己的隐式 JSON 编写器

当我尝试使用 Json.toJson(SubClass) 序列化子类对象时,出现错误:

有什么办法可以消除歧义吗?

0 投票
1 回答
369 浏览

scala - 为什么不适用的隐式转换会引入歧义?

此示例的设置(Scala 2.10.3):

这编译:

这不会:

因为没有隐含T[String]的。

因此,我假设 scalac 可以明确地应用从Stringto的隐式转换X

但相反,我们得到:

这是故意的吗?scalac 在枚举候选人时是否不应该考虑每次转换是否真的有效?

0 投票
0 回答
69 浏览

scala - 不从 val 调用时找不到类方法隐式参数

我有一个依赖于的类HList,有一个多态函数和一个将这个函数映射到列表上的方法。奇怪的是,这个方法只能在 a 上调​​用val,否则编译失败:

有没有办法在保持f内部的同时克服这种行为C?我试图将该方法提取g到另一个类或对象,但它没有帮助。

0 投票
1 回答
449 浏览

scala - Scala“上下文绑定”比普通参数有什么优势?

我正在阅读应该像类型类一样工作的上下文边界和隐式参数。我看到的例子经常使用Ordering[T]. 就像是:

这是糖

所以在体内你可以做类似的事情

我以为我以前明白这一点,现在我画了一个空白……与简单地将事物传递给函数相比有什么好处。例如:

0 投票
1 回答
574 浏览

json - 更好地解决隐含和排序问题,同时使用 Spray 序列化为 JSON?

我正在使用 Spray JSON 库将我们的案例类序列化为 JSON。问题是我们有一些相互递归的定义。我正在从这里序列化密封特征的示例中工作:http: //www.cakesolutions.net/teamblogs/2012/11/30/spray-json-and-adts/

这是一个有效的简单示例。请注意 C 的定义:

当您将“C”的定义更改为原始的相互递归定义时,.

现在很明显,你不能说不,我不能有相互递归的数据结构。由于隐式对象的解析规则,编译器似乎步履蹒跚。

有解决方法吗?我通过将对象更改为匿名类声明来解决它,即

最后一个片段有效,请注意从“隐式对象”到“隐式 val”的更改以及随后的匿名类。

0 投票
1 回答
3416 浏览

scala - 为什么我们必须从伴随对象显式导入具有隐式参数的隐式转换?奇怪的。

让我们考虑这段代码:

它运行并打印:

现在,如果我们注释掉这一行

然后我们得到一个编译错误:

在此处输入图像描述

注释掉该行后,为什么 Scala 无法找到A.A2String是否可以找到A.A2Int

如何解决这个问题?

谢谢阅读。

0 投票
3 回答
67 浏览

scala - 没有导入任何内容时,Scala 中的哪些隐式转换默认存在

Scala 中默认存在哪些隐式?

我知道RichStringRegex和我使用的其他一些。

  • 但是是否有所有清单?
  • 它们在哪里实施?源文件?
  • 有没有办法获取当前导入状态的所有可能隐式转换的列表?
0 投票
2 回答
312 浏览

scala - Scala 2.11 类型差异更改

在 Scala 2.10.4 中编译:

但在 2.11.0 中同样失败:

逆变类型 U 出现在类型 U 的不变位置,类型为 Contra trait Foo[-U,T] {type Contra = U}

有可用的解决方法吗?尝试将 Scala 库移植到 2.11 并且需要逆变类型才能让编译器拾取大量隐式定义(即,使 U 不变似乎不是一种选择)。

谢谢

0 投票
2 回答
158 浏览

scala - Implicits over type inference for object transformation

Part of a current project involves converting from types coupled to a database and a generic type used when serializing the results out to clients via Json, the current implementation in Scala uses type inference to correctly perform the transformation, using Scala's TypeTag:

The types used as input are all case classes and are defined internally within the application, for example:

This approach, although suitable at the moment, doesn't feel functional or scalable when potentially more DB types are added. I also feel using asInstanceOf should be redundant as the type has already been asserted. My limited knowledge of implicits suggests they could be used instead to perform the transformation, and remove the need for the above Transform[A: TypeTag](objects:Seq[A]):Seq[Children] method altogether. Or maybe there is a different approach I should have used instead?