【发布时间】:2014-07-19 04:21:34
【问题描述】:
我有一个副作用函数,它会改变类变量或在不满足前提条件时抛出异常。添加到类级可变映射后,我想从函数返回一个“布尔值”,表示成功。因此,下面是我正在考虑的内容,但是将布尔值硬编码为“true”感觉不合适,但是当它进入 yield 块时就是这种情况,否则析取的左侧将被异常填充。
def add(e: Entity, value: String): \/[Throwable,Boolean] = {
checkIfFieldIsKey(e.id) match {
case Some(id) =>
val validId = validateIdType(..)
for {
k <- validId
} yield { keys += (e -> k); true }
case None =>
for {
r <- validateTypeAndValue(e, value)
} yield { values += (e -> value); true }
}
}
其中 'keys' 和 'values' 是 ConcurrentHashMap 的 'val' 实例。因此,每次“添加”成功时,析取的右侧总是“真”,这意味着布尔值永远不会为假。这看起来合适吗?
【问题讨论】:
标签: scala