Scala中方法名$$[T]的含义是什么?是否为特殊语法?
Scala中
$$作为方法名的合理性解析 - 这完全是合法的Scala方法命名方式,Scala的标识符规则允许使用
$、$$这类符号作为方法名的组成部分,官方文档虽未单独提及该命名,但符合语言的语法规范。 - 代码里的
def $$[T](...)就是一个普通的泛型方法,名字叫$$,没有任何特殊语法含义,纯粹是开发者自定义的方法名。 - 开发者选择这类特殊命名通常有这些原因:
- 避免和已有方法名冲突(比如代码里已经用到了
props.$[T]方法) - 作为快捷调用的标识,让调用代码更简洁或有辨识度
- 部分框架会用这类命名标记内部工具方法,但本质还是普通方法
- 避免和已有方法名冲突(比如代码里已经用到了
另外你的代码存在两处语法错误,修正后如下:
class Reader(props: PropertyResolver, prefix: Option[String] = None) { def $$[T](name: String)(implicit conv: String => T): T = props.$[T](prefix.fold(name)(_ + name)) }
总结:这种用法完全合理,只是自定义的特殊命名方法,没有语法层面的额外含义,和其他普通方法的行为一致。
内容的提问来源于stack exchange,提问作者Ján Srniček
相关产品推荐
相关产品推荐

