例如,這樣的事情在阿達(如果它是支持這一點):靜態類型語言的類型在運行時決定?
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