Scala toString:是否括号?
我希望这个线程可以是一些优点/缺点的摘要,用于覆盖和调用toString有或没有空的括号,因为这个东西有时会混淆我,即使我已经进入Scala了一段时间。
那么哪一个比另一个更好?来自Scala极客,官员和OCD偏执狂的评论受到高度评价。 优点toString: 乍看起来似乎是一个明显而自然的选择; override def toString = underlying.toString 优点to toring(): >绝对不是“accessor-like”的名字(这就是IntelliJ IDEA检查员一次抱怨的一切) 那么最好的做法是什么?我还缺少什么吗? 更新:这个问题与每个JVM对象上定义的toString有关,所以我希望找到最佳实践(如果有的话)。 解决方法
以下是Scala中的Programming(10.3节)必须说的:
这是(非官方)Scala Style Guide(第18页)必须说的:
reply() // is the same as reply
后者没有提到统一准入原则。 如果您的toString方法可以实现为val,则意味着该字段是不可变的。但是,如果您的类是可变的,那么toString可能并不总是产生相同的结果(例如StringBuffer)。所以在Scala中的编程意味着我们应该在两种不同的情况下使用toString(): 1)当它的值是可变的 2)有副作用 就个人而言,我认为忽略第一个更常见,更一致。在实践中,String几乎不会有副作用。所以(除非它),总是使用toString并忽略统一访问原则(遵循风格指南):保留括号表示副作用,而不是可变性。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |