我正在学习斯卡拉,并与右联想不适用对象玩。我知道如果名字以':'结尾,那么它就成为正确的联想。然而,似乎有一些奇怪的限制,例如命名为斯卡拉右联想方法
例如, 这些都是无效
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_:
似乎是最接近的,但是,出于某种原因的标识不能用“:”开始,并有字母数字
太棒了!我不知道如何使用back tick来允许任意标识符。谢谢 – ekj
最后一个字符不是反引号,它是冒号。带引号的标识符中的引号字符不再成为标识符的一部分,而不是字符串字面值中的引号字符。字符串“”Hello“'表示的字符串的最后一个字符不是''',它是'o'。 –
@JörgWMittag:哇,这是我的一些令人难以置信的误读 - ”排除“就在那里。在我的辩护中,它早在这里,对于[this](http://stackoverflow.com/q/17863794/334519)我仍然有点bit I。我编辑了这个令我意外的反拨法。 –