2015-07-14 18 views
6

Ho fatto C, C++, Java e questi linguaggi mi hanno insegnato che i caratteri sono racchiusi tra virgolette singole (soprattutto se si rispettano la sintassi corretta) ma le stringhe sono doppie. È la sintassi di swift che consente solo ai caratteri di essere racchiusi tra virgolette singole o che esiste qualche ragione valida (logica) dietro l'offerta di questo tipo di sintassi.virgolette singole con caratteri in rapido

let char1: Character = "A" //correct 

let char2: Character = 'B' //incorrect 
+1

Perché la seconda riga non è corretta? Non lo è. –

+0

sorry edited @MorganWilde era un errore – AbhimanyuAryan

+0

@ Jean-PhilippePellet mi dispiace per errore che l'ho scritto. Si prega di verificare ora ho modificato la domanda. – AbhimanyuAryan

risposta

6

Lo stato dell'arte della tecnologia compilatore è cambiato molto da quando il tempo è stato sviluppato il primo compilatore C. I compilatori sono diventati molto più intelligenti nel capire le cose da soli, incluso il tipo di espressioni previste, senza l'aiuto dei programmatori.

La figura char rispetto a stringhe letterali è uno di questi esempi. Teoricamente, la struttura della C di oggi permette di dedurre il tipo di un letterale in molti contesti. Ad esempio, nel seguente codice il compilatore dispone di informazioni sufficienti per trattare le stringhe di un solo carattere, come se fossero letterali di caratteri:

void foo(char c); 
char s[] = "xyz"; 
// None of the below would compile 
char a = "a"; 
foo("b"); 
if (s[1] == "c") { 
    ... 
} 

Ritorno al momento, tuttavia, era più facile chiedere al programmatore di dire al compilatore che "a", "b" e "c" sono in realtà 'a', 'b' e 'c'. Inoltre, poiché i prototipi di funzione non sono stati introdotti fino all'ANSI C, l'inferenza foo("b") non era nemmeno possibile nella versione originale K & R della lingua.

L'aiuto del programmatore non è più necessario quando la lingua ha un sistema di inferenza di tipo, quindi i progettisti Swift hanno deciso di unificare la sintassi per le costanti stringa e carattere.

Problemi correlati