版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/42341283
与switch语句不同,scala模式匹配没有break的问题。如果case中的判断不能匹配,则捕获所有的模式来尝试匹配。变量模式可能与常量表达式冲突,变量必须以小写字母开头。如果有一个小写字母开头的常量,则需要把它抱在反引号中。
在类型匹配的时候,必须给出一个变量名,否则会拿对象本身来进行匹配。由于匹配发生在运行时,Jvm中泛型的类型信息是被擦掉的,所有不能用类型来匹配特定的Map类型。正则表达式是适合使用提取器的场景。
样例类是一种特殊的类,经过优化以被用于模式匹配,其实例使用(),样例对象不使用圆括号。中置表示法可用于任何返回对偶的unapply方法。样例类的特点:
1)模式匹配的代码更精简
2)构造时不需new
3)可以免费得到toString,equals,hashCode 和copy方法
让所有样例类都扩展某个密封的类或特质是个好做法。被包在花括号内的一组case语句是一个偏函数,偏函数表达式必须位于编译器可以推断返回类型的上下文中。
在类型匹配的时候,必须给出一个变量名,否则会拿对象本身来进行匹配。由于匹配发生在运行时,Jvm中泛型的类型信息是被擦掉的,所有不能用类型来匹配特定的Map类型。正则表达式是适合使用提取器的场景。
样例类是一种特殊的类,经过优化以被用于模式匹配,其实例使用(),样例对象不使用圆括号。中置表示法可用于任何返回对偶的unapply方法。样例类的特点:
1)模式匹配的代码更精简
2)构造时不需new
3)可以免费得到toString,equals,hashCode 和copy方法
让所有样例类都扩展某个密封的类或特质是个好做法。被包在花括号内的一组case语句是一个偏函数,偏函数表达式必须位于编译器可以推断返回类型的上下文中。