在单位方法中使用=

时间:2013-09-09 02:29:09

标签: scala

我对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()
    }
 }

2 个答案:

答案 0 :(得分:3)

过道双方都有强烈的意见,除了“更容易看到你的眼睛”之外,没有基于认知科学的答案选择风格。

通常情况下,有人会说一种风格突然出现在他们面前,并说:“我没有回复任何有用的东西。”

但是,有一个ticket to deprecate procedure syntax

当票据被打开或者Odersky认为该功能未来被弃用时,这一事实当然不是决定性的。

可能辩论演变为:如果我定义一个过程,我是否应该始终指定Unit结果类型?答案可能是肯定的。通常,您希望避免推断无用的东西。

但是不是一直在增加: Unit的麻烦吗?是的,因为程序应该像拇指一样突出。当你拥有的只是一把锤子时,你总是会用拇指疼痛。

答案 1 :(得分:0)

是的,当然,最初有点令人困惑。 我更喜欢使用Thumb规则,如

如果从方法返回值,则可以将返回值分配给其他资源 - 因此请使用“=”

如果你没有返回任何值,你可能只是计算/存储某些东西或打印一些东西 - 因此忘记了“=”。