2015-07-14 15 views
6

Tôi đã thực hiện C, C++, Java và các ngôn ngữ này đã dạy tôi rằng các ký tự được kèm theo trong dấu nháy đơn (chủ yếu là khi tuân theo cú pháp thích hợp) nhưng chuỗi được trích dẫn kép. Cú pháp của nó có nhanh không chỉ cho phép các ký tự nằm bên trong các dấu nháy đơn hoặc có một số lý do hợp lệ (logic) phía sau cung cấp loại cú pháp này.dấu nháy đơn với các ký tự trong swift

let char1: Character = "A" //correct 

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

Tại sao dòng thứ hai không chính xác? Nó không phải là. –

+0

xin lỗi đã chỉnh sửa @MorganWilde đó là lỗi – AbhimanyuAryan

+0

@ Jean-PhilippePellet xin lỗi do nhầm lẫn tôi đã viết điều đó. Vui lòng kiểm tra ngay bây giờ tôi đã chỉnh sửa câu hỏi. – AbhimanyuAryan

Trả lời

6

Tình trạng của công nghệ biên dịch đã thay đổi rất nhiều kể từ thời điểm đó trình biên dịch C đầu tiên được phát triển. Các trình biên dịch trở nên thông minh hơn nhiều về việc tự tìm ra các thứ, bao gồm cả kiểu biểu thức dự định, mà không cần sự trợ giúp của các lập trình viên.

Tìm ra char so với chuỗi ký tự là một ví dụ như vậy. Về mặt lý thuyết, cấu trúc của C ngày nay cho phép suy ra kiểu chữ trong nhiều ngữ cảnh. Ví dụ, trong đoạn code dưới đây trình biên dịch có đủ thông tin để xử lý chuỗi ký tự duy nhất như thể chúng là literals nhân vật:

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

Trở lại vào thời điểm đó, tuy nhiên, nó là dễ dàng hơn để hỏi các lập trình viên nói với trình biên dịch rằng "a", "b""c" thực sự là 'a', 'b''c'. Hơn nữa, kể từ khi nguyên mẫu chức năng đã không được giới thiệu cho đến khi ANSI C, foo("b") suy luận thậm chí không thể có trong phiên bản R & R ban đầu của ngôn ngữ.

Trợ giúp của lập trình viên không còn cần thiết khi ngôn ngữ có hệ thống suy luận kiểu, vì vậy các nhà thiết kế Swift đã quyết định hợp nhất cú pháp cho chuỗi và các hằng số ký tự.

Các vấn đề liên quan