Java拟引入模式匹配直接断言并强制绑定?

Java拟引入模式匹配直接断言并强制绑定?,第1张

到目前为止,我们在语言中已经有两个上下文可以容纳模式:`instanceof`和`switch`。


这两个都是条件上下文,倍设计用于处理部分模式:测试一个模式是否匹配,如果匹配,有条件地提取一些状态并对其采取行动。


不过,在有些情况下,我们知道一个模式总是匹配的,在这种情况下 我们想让自己免于询问的仪式。


如果我们有一个三维的“点Point”对象,总是询问它是否是一个 "点Point "是多余的,而且会分散注意力。


``
Point p = ...
if (p instanceof Point(var x, var y, var z)) {
     // use x, y, z
}
```

在这种情况下,我们在问一个我们知道答案的问题,并且我们扭曲了我们的代码结构来做这件事。


此外,我们还在 剥夺了编译器愿意做的类型检查。


引入Let-bind语句

在这种情况下,我们要断言模式匹配,并且强行绑定它,也就是说我们宁愿直接以我们认定的模式去做,不用询问了。


我们已经试验了几种表达方式:

而最好的方法似乎是某种 "let "语句

``
let Point(var x, var y, var z) p = ...;
// can use x, y, z, p
```

其他方式有用bind:

``
bind Point(var x, var y, var z) p = ...;
```

甚至不用引入关键字,直接普通使用即可:

``
Point(var x, var y, var z) p = ...;
```

`let`语句接收一个模式和一个表达式,我们静态地验证模式在表达式的类型上是穷尽的;

如果不是,在编译时就是一个类型错误。


任何出现在模式中的绑定都是肯定会被分配,并且在包含该块的其余部分的范围内 。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/562406.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-01
下一篇2022-04-01

发表评论

登录后才能评论

评论列表(0条)

    保存