scala - Product.scala trait 中 productPrefix def 的实际使用
问题描述
也许是愚蠢的问题,但我找不到任何有用的解释。我已经阅读了文档,但我很困惑,也许一种用途是在某种程度上比较类型。有什么想法或实际例子吗?
块引用
派生类的 toString 方法中使用的字符串。实现可以覆盖此方法以在 toString 方法的结果前添加字符串前缀。返回:在默认实现中,空字符串 Blockquote
解决方案
元组(extend Product
)打印如下:
(x1, ..., xN)
^ opening parenthesis
^ elements
^ commas
^ closing parenthesis
案例类(也扩展Product
)打印如下:
CaseClassName(x1, ..., xN)
^^^^^^^^^^^^^ class name
^ opening parenthesis
^ elements
^ commas
^ closing parenthesis
由于两者都继承自,因此可以在-traitProduct
中提供一次默认toString
实现,这会产生如下内容:Product
${productPrefix}(x1, ..., xN) // ascii-art, not actual code
对于productPrefix = ""
元组和productPrefix = "CaseClassName"
案例类。
鉴于Tuple
s 是语言中不可或缺的一部分,我可以想象,使用从Product
trait 继承的方法实现可以在编译器开发的最早阶段达到“dogfooding”的实际目的:这实际上可能是一个s的第一个也是最简单的用法之一trait
。(这对我来说似乎有些合理,但这纯粹是推测性的;我并没有试图深入研究提交历史。)
否则,就没有更深层次的意义。这只是toString
实施的一部分。你永远不应该依赖toString
任何实现,也不应该将它用于任何类型的程序逻辑。
推荐阅读
- c# - 无法在 Mimekit 中发送邮件
- symfony - 如果从 ChoiceType 中选择了某个值,则添加字段
- c# - C# - 异步文本读取阻塞
- rest - 如何使用 Keycloak(仅承载)保护 Jax-rs API 端点?
- ionic-framework - 忽略对自签名证书的请求
- javascript - 使用 RollupJS 在网页中合并遗留 JS
- python - 使用先知时如何解决 AttributeError 错误?
- asp.net-mvc - 异步模式下 Kendo UI 上传小部件上的自定义事件
- python - Python AttributeError:“客户端”对象没有属性“命令”
- javascript - 如何检测组件何时离开画布?