到目前为止,我们在语言中已经有两个上下文可以容纳模式:`instanceof`和`switch`。
这两个都是条件上下文,倍设计用于处理部分模式:测试一个模式是否匹配,如果匹配,有条件地提取一些状态并对其采取行动。
不过,在有些情况下,我们知道一个模式总是匹配的,在这种情况下 我们想让自己免于询问的仪式。
如果我们有一个三维的“点Point”对象,总是询问它是否是一个 "点Point "是多余的,而且会分散注意力。
``` |
在这种情况下,我们在问一个我们知道答案的问题,并且我们扭曲了我们的代码结构来做这件事。
此外,我们还在 剥夺了编译器愿意做的类型检查。
引入Let-bind语句
在这种情况下,我们要断言模式匹配,并且强行绑定它,也就是说我们宁愿直接以我们认定的模式去做,不用询问了。
我们已经试验了几种表达方式:
而最好的方法似乎是某种 "let "语句
``` |
其他方式有用bind:
``` |
甚至不用引入关键字,直接普通使用即可:
``` |
`let`语句接收一个模式和一个表达式,我们静态地验证模式在表达式的类型上是穷尽的;
如果不是,在编译时就是一个类型错误。
任何出现在模式中的绑定都是肯定会被分配,并且在包含该块的其余部分的范围内 。
更多点击标题