例如,这样的事情在阿达(如果它是支持这一点):静态类型语言的类型在运行时决定?
type Type_Name is range bottom .. top;
其中,“底”和“顶”是变量。
或用C是这样的(如果它是支持此):
struct s {
int a;
if (z<3) {
char b;
int c;
} else {
struct ss {
int b;
char c;
}
}
} v;
或,如果c是具有在声明的变量标识符后的类型:
var if (z<3) int else char;
或类似的东西。
这只是出于好奇。我甚至不知道它是否有用,而且我知道它会产生许多问题,例如在使用之前必须检查是否存在类似s.ss.b
的问题。噢,也许我应该重申标题中的问题:是否有任何静态类型的语言在运行时决定类型?如果是这样,他们是什么?
顺便说一句,也许这意味着该语言不会被静态类型。但是我的意思是变量的类型必须在使用前陈述的语言(当然不能这样做)。
您的问题体现了矛盾的条款。 “静态”是指类型是在编译时确定的。不是一个真正的问题。 – EJP 2012-07-20 19:17:14