stand out from other languages
No. Come già commentato Jörg, questo modulo è attualmente utilizzato in molte lingue. È probabilmente la forma più comune di dichiarazione delle variabili per numero di lingue che la usano. È stato usato allora con Pascal e lingue correlate e ora viene utilizzato da tutti quelli nuovi come TypeScript, Go, Rust e Scala.
type identifier, if there is one, precedes the declaration
Il
type identifier [ =
value ]
la forma della dichiarazione in C era per alcuni aspetti un errore grave . Il suo problema serio è che rende la grammatica della lingua contestuale. Gli identificatori di tipo e oggetto hanno lo stesso aspetto sintattico, ma questa forma di dichiarazione non può essere riconosciuta senza sapere che il primo identificatore identifica un tipo. Quindi il compilatore non può costruire l'albero della sintassi senza fare riferimento alla tabella dei tipi già definiti. Ciò causa problemi ai template, perché l'interpretazione può dipendere dal parametro, quindi il compilatore non può sapere se sta ancora guardando un tipo.
In C ++ questo significa che devi usare typename
keyword nei casi ambigui. Java e C # lo schivano non avendo typedef, quindi non puoi avere tipi correlati, ma ciò limita seriamente l'utilità dei loro template. E comunque complica comunque il compilatore.
D'altra parte con dichiarazioni nel modulo
keyword identifier [ :
type ] [ =
value ]
l'identificatore dopo :
(e alcune parole chiave come new
) indica sempre che il tipo e l'identificatore in qualsiasi altro luogo non lo fanno mai e la grammatica è senza contesto e tutto è molto più semplice.
È anche più regolare quando il tipo è facoltativo. Lo hai appena omesso. Nel modulo C, devi sostituirlo con una parola chiave speciale.