我对Scala推荐使用Unit
方法中的等号的方式感到有点困惑,建议使用哪种方法?
def withPrintWriter(file: File, op: PrintWriter => Unit) {
val writer = new PrintWriter(file)
try {
op(writer)
} finally {
writer.close()
}
}
或
def withPrintWriter(file: File, op: PrintWriter => Unit) = {
val writer = new PrintWriter(file)
try {
op(writer)
} finally {
writer.close()
}
}
答案 0 :(得分:3)
过道双方都有强烈的意见,除了“更容易看到你的眼睛”之外,没有基于认知科学的答案选择风格。
通常情况下,有人会说一种风格突然出现在他们面前,并说:“我没有回复任何有用的东西。”
但是,有一个ticket to deprecate procedure syntax。
当票据被打开或者Odersky认为该功能未来被弃用时,这一事实当然不是决定性的。
可能辩论演变为:如果我定义一个过程,我是否应该始终指定Unit
结果类型?答案可能是肯定的。通常,您希望避免推断无用的东西。
但是不是一直在增加: Unit
的麻烦吗?是的,因为程序应该像拇指一样突出。当你拥有的只是一把锤子时,你总是会用拇指疼痛。
答案 1 :(得分:0)
是的,当然,最初有点令人困惑。 我更喜欢使用Thumb规则,如
如果从方法返回值,则可以将返回值分配给其他资源 - 因此请使用“=”
如果你没有返回任何值,你可能只是计算/存储某些东西或打印一些东西 - 因此忘记了“=”。