2015-07-14 14 views
6

Zrobiłem C, C++, Java i te języki nauczyły mnie, że znaki są ujęte w pojedyncze cytaty (głównie przy przestrzeganiu właściwej składni), ale łańcuchy są podwójnie cytowane. Czy jest to składnia szybka, która pozwala tylko na wstawianie znaków wewnątrz pojedynczych cudzysłowów, czy też istnieje jakiś ważny powód (logika) za oferowaniem tego rodzaju składni.Pojedyncze cytaty z postaciami w szybkim

let char1: Character = "A" //correct 

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

Dlaczego druga linia byłaby niepoprawna? Nie jest. –

+0

Przepraszam edytowane @MorganWilde to był błąd – AbhimanyuAryan

+0

@ Jean-PhilippePellet przepraszam przez pomyłkę napisałem to. Sprawdź teraz, edytowałem pytanie. – AbhimanyuAryan

Odpowiedz

6

Swifta stanu techniki kompilator nie zmieniło się wiele od czasów pierwszego kompilatora C został opracowany. Kompilatory stały się o wiele mądrzejsze w samodzielnym samodzielnym określaniu rzeczy, w tym zamierzonym typom wyrażeń, bez pomocy programistów.

Wykreślanie liczb literowych ciągu znaków jest jednym z takich przykładów. Teoretycznie struktura dzisiejszego C pozwala wnioskować o typie literału w wielu kontekstach. Na przykład, w kodzie poniżej kompilator ma wystarczających informacji, aby traktować ciągi pojedynczych znaków, jak gdyby były literały znakowe:

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

powrotem w czasie, jednak łatwiej było poprosić programistę poinformować kompilator że "a", "b" i "c" są w rzeczywistości 'a', 'b' i . Co więcej, ponieważ prototypy funkcji nie zostały wprowadzone, dopóki ANSI C, foo("b") wnioskowanie nie było nawet możliwe w oryginalnej wersji językowej K & R.

Pomoc programisty nie jest już wymagana, gdy język ma system typu inferencyjnego, więc projektanci Swiftu zdecydowali się zunifikować składnię znaków i stałych znaków.