我正在学习Scala,并尝试使用正确关联的unapply对象。我知道如果名称以':'结尾,则它会变成右关联。但是,似乎对命名有一些奇怪的限制。
例如: 这些都是无效的
object cons: { def unapply(value: String): Option[(Char, List[Char])] = ??? }
object :_cons_: { def unapply(value: String): Option[(Char, List[Char])] = ??? }
这些是有效的
object cons_: { def unapply(value: String): Option[(Char, List[Char])] = ??? }
object >>: { def unapply(value: String): Option[(Char, List[Char])] = ??? }
似乎在标识符中混合使用字母数字字符和符号有些奇怪。
基本上,我想要一个描述性的名称,例如“cons”,并且仍然具有正确的关联性。此外,出于美学原因,我希望我的运算符是对称的 :-),所以我不太喜欢
cons_:
。有没有办法使某些东西与右侧相关而不使用冒号?或者有其他建议来实现这一点吗?
:_cons_:
似乎最接近,但由于某种原因,标识符不能以':'开头并包含字母数字。