一个函数式编程相关的问题。

“一行代码值一千字”,所以:

class Entry {
  var entryOrderId: Option[Int]
  def closeEntry(closeOrder: Order) = {
    require(entryOrderId.isDefined)
    ...
  }
}

问题:为了关闭条目,必须定义 entryOrderId。我不想抛出异常(使用“require”函数)并且我不想返回 Try(成功/失败)对象,因为调用者不期望任何返回值。你会如何设计这个功能?

(注意:我标记了 Scala,但这里的语言不是问题...)

最佳答案

按照你的要求,如果调用者真的不关心结果,那么你可以在 foreach 上使用 entryOrderId 。因此只有定义了 entryOrderId 时才会调用内部块。

class Entry {
  var entryOrderId: Option[Int]
  def closeEntry(closeOrder: Order) = entryOrderId foreach { id =>
    // do something with the `id` ...
  }
}

关于scala - 如何设计一个接受所有域但依赖于某些状态的偏函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27570388/

10-12 04:49