shapeless 2.3.3LabelledGeneric在以下case类上运行时返回一个奇怪的结果:

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$1@1ac7dbd3

注意,返回的标签字面上是=而不是$eq
这种行为是一种畸形的怪癖还是别的什么?是否还有其他导致怪异行为的标识符名称?
我需要这个来进行MongoDB序列化,这对我来说是个大麻烦…

最佳答案

根据阿列克谢在Q中的评论,这是一个无形状的“特征”,因为Scala/Java互操作的方式。后者在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

10-06 01:03