我想知道以下语法是否可用于编译语言?请不要提供 java,因为它需要 JVM。该设计相当于工厂设计模式,因为我们在正常情况下一旦通过某些测试就初始化一个类,我们使用大量 if-else 语句,即当我们有一系列类时,我们即 10 个类,代码变得笨拙我正在尝试创建一种已转译或编译的语言尚未决定,并且会研究目前正在使用 kotlin-native 和 llvm(尚未排序的 llvm 集成)的已编译语言的功能,它正在启动,这就是我想要考虑使用的。
class A{
}
class B extends A{
}
class C extends A{
}
class D extends A{
}
class E extends A{
}
class F extends A{
}
class G extends A{
}
class H extends A{
}
class I extends A{
}
class J extends A{
}
class K extends A{
}
function getClass(test){
if(test == 1){
return new B()
}else if (test == 2){
return new C()
}else if (test == 3){
return new D()
}else if (test == 4){
return new E()
}else if (test == 5){
return new F()
}else if (test == 6){
return new G()
}else if (test == 7){
return new H()
}else if (test == 8){
return new I()
}else if (test == 9){
return new J()
}else if (test == 10){
return new K()
}
}
let klass = getClass(10)
console.log(`Found class ${klass.constructor.name}`)
class A {
static test(test) {
return test === this.index;
}
}
class B extends A{}
B.index = 1
class C extends A{}
C.index = 2
class D extends A{}
D.index = 3
class E extends A{}
E.index = 4
class F extends A{}
F.index = 5
class G extends A{}
G.index = 6
class H extends A{}
H.index = 7
class I extends A{}
I.index = 8
class J extends A{}
J.index = 9
class K extends A{}
K.index = 10
let klasses = [B, C,D,E,F,G,H,I,G,K];
let klass = new A();
let test = 7;
for (let i = 0; i < klasses.length; i++) {
try {
if(klasses[i].test(test)){
klass = new klasses[i]()
}
} catch (e) {
console.log(e)
}
}
console.log(`Found class ${klass.constructor.name}`);