问题标签 [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.
makefile - makefile 中的隐式规则
考虑以下生成文件:
该make
命令的输出是
还行吧。但是,如果生成文件是:
那么make
命令的输出是
我希望它与第一个示例中的相同。为什么不一样?我在 makefile 的目录中有一个 foo.c 和 foo.z 文件。
json - 播放 json 写入子类给出模棱两可的隐含值错误
我正在使用播放框架,并且有一个抽象类:
在伴生对象中有自己的隐式 JSON 编写器
我将这个抽象类子类化:
它的伴生对象中也有自己的隐式 JSON 编写器
当我尝试使用 Json.toJson(SubClass) 序列化子类对象时,出现错误:
有什么办法可以消除歧义吗?
scala - 为什么不适用的隐式转换会引入歧义?
此示例的设置(Scala 2.10.3):
这编译:
这不会:
因为没有隐含T[String]
的。
因此,我假设 scalac 可以明确地应用从String
to的隐式转换X
:
但相反,我们得到:
这是故意的吗?scalac 在枚举候选人时是否不应该考虑每次转换是否真的有效?
scala - 不从 val 调用时找不到类方法隐式参数
我有一个依赖于的类HList
,有一个多态函数和一个将这个函数映射到列表上的方法。奇怪的是,这个方法只能在 a 上调用val
,否则编译失败:
有没有办法在保持f
内部的同时克服这种行为C
?我试图将该方法提取g
到另一个类或对象,但它没有帮助。
scala - Scala“上下文绑定”比普通参数有什么优势?
我正在阅读应该像类型类一样工作的上下文边界和隐式参数。我看到的例子经常使用Ordering[T]
. 就像是:
这是糖
所以在体内你可以做类似的事情
我以为我以前明白这一点,现在我画了一个空白……与简单地将事物传递给函数相比有什么好处。例如:
json - 更好地解决隐含和排序问题,同时使用 Spray 序列化为 JSON?
我正在使用 Spray JSON 库将我们的案例类序列化为 JSON。问题是我们有一些相互递归的定义。我正在从这里序列化密封特征的示例中工作:http: //www.cakesolutions.net/teamblogs/2012/11/30/spray-json-and-adts/
这是一个有效的简单示例。请注意 C 的定义:
当您将“C”的定义更改为原始的相互递归定义时,.
现在很明显,你不能说不,我不能有相互递归的数据结构。由于隐式对象的解析规则,编译器似乎步履蹒跚。
有解决方法吗?我通过将对象更改为匿名类声明来解决它,即
最后一个片段有效,请注意从“隐式对象”到“隐式 val”的更改以及随后的匿名类。
scala - 为什么我们必须从伴随对象显式导入具有隐式参数的隐式转换?奇怪的。
让我们考虑这段代码:
它运行并打印:
现在,如果我们注释掉这一行
然后我们得到一个编译错误:
注释掉该行后,为什么 Scala 无法找到A.A2String
是否可以找到A.A2Int
?
如何解决这个问题?
谢谢阅读。
scala - 没有导入任何内容时,Scala 中的哪些隐式转换默认存在
Scala 中默认存在哪些隐式?
我知道RichString、Regex和我使用的其他一些。
- 但是是否有所有清单?
- 它们在哪里实施?源文件?
- 有没有办法获取当前导入状态的所有可能隐式转换的列表?
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 不变似乎不是一种选择)。
谢谢
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?