Scala 基于布尔值填充枚举集
我有一套:为了论证起见,让我们称之为Scala 基于布尔值填充枚举集,scala,playframework-2.0,Scala,Playframework 2.0,我有一套:为了论证起见,让我们称之为果篮:套[果] Fruitenum的值有Apple、Pear和Orange 我想用以下内容填充果篮: Apple如果布尔值hasaapple为真 Pear如果布尔值hasPear为真 Orange如果布尔值hasaorange为真 例如,如果这三个布尔值都为真,foultbasket将包含Apple、Pear和Orange 请问,在Scala中,语法上最简洁的方法是什么 现实生活中的用例是一个处理复选框的表单映射。我不喜欢我当前的实现,这感觉很笨拙: va
果篮:套[果]
Fruit
enum的值有Apple
、Pear
和Orange
我想用以下内容填充果篮
:
如果布尔值Apple
为真hasaapple
如果布尔值Pear
为真hasPear
如果布尔值Orange
为真hasaorange
foultbasket
将包含Apple
、Pear
和Orange
请问,在Scala中,语法上最简洁的方法是什么
现实生活中的用例是一个处理复选框的表单映射。我不喜欢我当前的实现,这感觉很笨拙:
var modes = Set[ExchangeMode]()
if (exchangeModeL) modes += LenderHosts
if (exchangeModeD) modes += DropOffToBorrower
if (exchangeModeP) modes += AtPublicPlace
modes
这个怎么样:
val modes = Map(
LenderHosts -> exchangeModeL,
DropOffToBorrower -> exchangeModeD,
AtPublicPlace -> exchangeModeP
) filter (_._2) keySet
如果您更喜欢理解和模式匹配元组:
for {
(b, v) <- Set(hasApple->Apple, hasPear->Pear, hasOrange->Orange) if b
} yield v
用于{
(b,v)苹果,哈斯皮尔->梨,哈斯橘->橘子)如果b
}产量v