当我通过多个模式匹配发送变量时,这样做的命名约定是什么?
val somethingBetweenOriginalAndResult = original match {
case ...
case ...
}
val somethingElseBetweenOriginalAndResult = somethingBetweenOriginalAndResult match {
case ...
case ...
}
val result = somethingElseBetweenOriginalAndResult match {
case ...
case ...
}
事实上,我只需要在我的命名空间之间引入的original
和result
每个val,并要求我创建一个新的变量名称。我怎么能避免这个?
答案 0 :(得分:4)
使用一个块和简短的临时变量名称(足够长的时间向某人建议你想要完成的事情 - 如果很明显,x
并且公司会做得很好):
val original = ...
val result = {
val x = original match { ... }
val y = x match { ... }
y match { ... }
}
如果您愿意,您甚至可以完全省略变量名称(虽然优先级是向后的,因此您需要添加parens或其他内容):
val result = {
((original match {
...
}) match {
...
}) match {
...
}
}
因为上一场比赛的结果是下一场比赛的结果。
答案 1 :(得分:1)
如果你真的不关心某些东西,那么你应该尽量避免创造它。它实际上取决于原始类型和您在模式匹配中考虑的情况,但可能有一种方法可以通过一种模式匹配来实现。最糟糕的情况,为什么不使用它:
val result = original match {
case ...
case ...
} match {
case ...
case ...
} match {
case ...
case ...
}
我真的不喜欢它,但至少你没有创建一个你可能在以后偶然引用的不必要的值。