有没有办法将来自2个不同类的switch
语句组合起来,但是将相同的函数名称合并为1,而不是覆盖函数并手动编写switch
语句,或以某种方式复制粘贴来自ClassB的switch
并将其粘贴到ClassA的switch
之后?
A类:
protected casesHandler(): void
{
switch (case){
case 0:
break;
default:
super.caseHandler();
}
}
B组:
protected casesHandler(): void
{
switch (case){
case 1:
break;
default:
super.caseHandler();
}
}
欲望结果:
protected casesHandler(): void
{
switch (case){
case 0:
break;
case 1:
break;
default:
super.caseHandler();
}
}
试图避免:
protected casesHandler(): void
{
switch (case){
case 0:
break;
default:
super.caseHandler();
}
switch (case){
case 1:
break;
default:
super.caseHandler();
}
}
答案 0 :(得分:0)
没有办法做到这一点,但即使你能以某种方式做到这一点,它看起来也不像是干净的代码。
您可以将此逻辑分离为一个简单的函数并导入到您需要的位置:
export const casesHandler = (case: number): void => {
switch (case) {
case 0:
// code
case 1:
// code
default:
// code
}
}
答案 1 :(得分:0)
这些功能并不相似。 super
中的super.caseHandler()
被硬编码到特定的父类。因此,这些default
方法中的casesHandler
不同,而且覆盖casesHandler
并没有错。
为了达到这个目的,可能会有一些遵循某些惯例的抽象:
protected casesHandler(): boolean {
switch (case) {
case 0:
break;
default:
return false;
}
return true;
}
protected casesWithDefaultHandler(): void
const isCaseSolved = this.casesHandler();
if (!isCaseSolved)
super.caseHandler();
}
然后可以组成几个casesHandler
函数。