问题标签 [scala-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.
scala - 从 inferImplicitValue 返回的 Scala 语法树无法评估
我正在编写一个 Scala 宏(Scala 2.11),我想在其中使用 获取表示宏内部隐式变量的inferImplicitValue
树,评估该语法树,然后使用该值。我实际上已经这样做了,但它似乎并不适用于所有情况[1]。我构建了一个失败的简化示例。
如果我编译上述内容,然后调用它:
我看到编译失败的方式如下:
完整输出: https ://gist.github.com/erikerlandson/df48f64329be6ab9de9caef5f5be4a83
因此,您可以看到它正在为声明的隐式 value 查找树demo.this.demoEvidence
,但对该树的评估失败。我已经在我的项目的其他地方看到了这种基本方法。不知道有什么区别,以及为什么在这里失败。
[1] 更新:如果隐式值在(子)项目中定义,并编译,然后在该项目外部使用,它会按预期工作。这就是这种方法对我有用的情况。
所以问题是这是否只是我必须忍受的一个基本约束,或者是否有一些巧妙的解决方法,或者这是否是一个“错误”,可以在宏中推断出可能修复的隐式值。
更新:我为此提交了一个 Scala 问题:https ://github.com/scala/scala-dev/issues/353
scala - 在 intellij 中处理错误未使用导入的最佳方法
Intellij 错误地将 Scala 隐式的某些导入标记为未使用。有没有办法防止它在针对特定导入显式优化它们时删除这些导入,而不是阻止整个项目的优化导入?
scala - Scala 意外编译文件,是否存在隐式转换?
我试图弄清楚为什么下面的类在 Scala 中编译时没有错误。我希望类中的createTestClass
方法DoTest
会因键入错误而失败,因为它试图提供具有 type 的隐式参数TypeClass[A]
,但它提供了一个带有 type 的 lambda 而不是这样的实例A => String
。
这里有一些隐式转换吗?我将如何弄清楚发生了什么?
scala - 映射到列表头部时理解 Scala Map 对象
您好我有以下数据,想将其映射到第二个参数中的第一项。因此对于:
我想:
当此数据在 RDD 中时,我可以执行以下操作:
但是,当它位于 Map 对象(groupBy 的结果)中时,我得到以下信息:
当我映射到整个列表时,我得到了我所期望的,但当我打电话给它时却没有
如果我执行以下任一操作,我也可以获得我想要的结果:
有人可以解释一下这里发生了什么吗?
scala - 按类型选择字段
我正在尝试创建一个允许为给定类型选择字段的类型类。这是我到目前为止所做的,但编译器无法找到 Selector.Aux
会这样使用
当只有一个且只有一个 AddressKey 类型的字段时,这应该才有效。关于如何实施它的任何想法?
scala - Joda Marshalling/Unmarshalling in scala
我正在尝试使用 akka.http.scaladsl.testkit.responseAs 来测试一些端点,但我不知道如何处理 org.joda.time.DateTime 对象的编组/解组过程。例如,考虑下面的案例类:
另外,请考虑以下路线测试:
当我运行“sbt test”时,代码无法编译,抛出以下错误:“找不到akka.http.scaladsl.unmarshalling.FromResponseUnmarshaller[me.archdev.restapi.models.ConfigEntity] 类型的证据参数的隐式值"
我知道该消息非常不言自明,但我仍然不知道如何创建代码抱怨的隐式 FromResponseUnmarshaller。
我的代码基于此示例:https ://github.com/ArchDev/akka-http-rest
我只是在创建一些新实体并尝试玩...
提前致谢。
scala - Scala 隐式类成员在对象中不可访问
我正在使用 Scala bCrypt包装器来加密用户密码,这个包装器提供了一个隐式类。
但是我面临一个奇怪的问题,每当我在课堂上使用这个隐式转换时,它工作得很好,但转换不适用于对象或案例类。
我不确定我在这里做错了什么。
scala - 使用带有隐式参数的泛型方法时不明确的隐式值
在以下代码中:
在 的赋值中x
,为什么编译器不能推断 fooImplicitGetter 的类型是Int
,因此它需要使用FooInt
实例,因为它可以在 的赋值中y
?除了明确fooImplicitGetter[Int]
传递等之外,还有什么方法可以帮助它吗?FooInt
如果重要的话,这低于 2.11。
编辑:这似乎与此处提到的相同问题:Inferring type of generic implicit parameter from return type,所以我修改了我的示例以匹配。我也可以关闭它以进行重复,除非有人有答案。
scala - 对象的Scala隐式转换
假设我有以下代码片段:
我想String
与Command
没有显式转换的后代进行比较。例如:
Q1:在 Scala 中可以吗?
Q2:我能否定义通用隐式转换,将已知类型(如 String)转换为超类类型(如Command
我的情况)?
例如:
PS我知道它不是惯用的Scala,但找到正确的方法会很棒。