一个函数式编程相关的问题。
“一行代码值一千字”,所以:
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/