包含 `$eq` 的标记通用

Labelled Generic containing `$eq`

Shapeless 2.3.3 LabelledGeneric returns 当 运行 在以下情况 class:

时的奇怪结果
scala> case class Foo(`$eq`: Int)
defined class Foo

scala> LabelledGeneric[Foo]
res0: shapeless.LabelledGeneric[Foo]{type Repr = Int with shapeless.labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("=")],Int] :: shapeless.HNil} = shapeless.LabelledGeneric$$anon@1ac7dbd3

注意返回的标签字面意思是 = 而不是 $eq

这种行为是无形的怪癖还是其他什么?是否有其他标识符名称会导致奇怪的行为?

我需要这个 MongoDB 序列化,这让我很头疼...

根据 Alexey 在 Q 中的评论,由于 scala/java 互操作的工作方式,这是 Shapeless 中的 'feature'。后者在 "operators and overaloading" 下的 Daniel Spiewak's blot post 中有解释。

根据博客,此影响的运算符列表是:

op  Compiles To
=   $eq
>   $greater
<   $less
+   $plus
-   $minus
*   $times
/   div
!   $bang
@   $at
#   $hash
%   $percent
^   $up
&   $amp
~   $tilde
?   $qmark
|   $bar
\   $bslash
:   $colon