【发布时间】:2011-12-28 18:31:28
【问题描述】:
我希望这个线程是某种优缺点的总结,用于覆盖和调用 toString 带或不带空括号,因为这件事有时仍然让我感到困惑,即使我已经进入 Scala 很长时间了一会儿。
那么哪一个比另一个更可取?非常感谢 Scala 极客、官员和强迫症偏执狂的评论。
toString 的优点:
- 乍一看似乎是一个显而易见的自然选择;
- 大多数情况都是微不足道的,只是在不修改内部状态的情况下即时构造字符串;
-
另一种常见的情况是将方法调用委托给包装的抽象:
override def toString = underlying.toString
toString() 的优点:
- 绝对不是“类似访问器”的名称(这就是 IntelliJ IDEA 检查员不时抱怨的方式);
- 可能意味着一些 CPU 或 I/O 工作(在计算每个
System.arrayCopy调用对性能至关重要的情况下); - 甚至可能意味着一些可变的状态更改(考虑第一个
toString调用成本高昂的示例,因此它在内部缓存以在未来产生更快的调用)。
那么最佳做法是什么?我还缺少什么吗?
更新:这个问题与在每个 JVM 对象上定义的toString 专门相关,所以我希望找到最佳实践,如果它存在的话.
【问题讨论】:
-
编辑解释,为什么不是。
标签: scala