Thing(1) and Thing(2)
如果我们使用0到100之间的输入调用ThingCreator(),那么输出会是什么?
答案是Thing(1) through Thing(4)
,但我不知道{{1}}是怎么回事。如果我们通过50它应该匹配最后一个案例。有人可以解释它是如何工作的吗?
答案 0 :(得分:0)
case x
,其中x
是任何小写标识符,匹配任何值并将其分配给名为x
的新创建的变量。
无论是否已存在具有相同名称的变量,都是如此。
答案 1 :(得分:0)
那是因为 Scala编译器永远不会低于匹配案例模式中的case a => Thing(2)
行
Scala编译器应该发出警告
patterns after a variable pattern cannot match (SLS 8.1.1)
case a => Thing(2)
^
和
unreachable code
case b => Thing(3)
^
SLS 8.1.1 陈述
变量模式x是一个以小写字母开头的简单标识符。它匹配任何值,并将变量名称绑定到该值。 x的类型是从外部给出的模式的预期类型。一个特例是外卡模式_,它被视为每次出现时都是一个新变量。