Sự khác biệt c và c ++
Show
________số 8
Swift là ngôn ngữ lập trình mới để phát triển ứng dụng iOS, macOS, watchOS và tvOS. Tuy nhiên, nhiều phần của Swift sẽ quen thuộc với kinh nghiệm phát triển của bạn trong C và Objective-C Swift cung cấp các phiên bản riêng của tất cả các loại C và Objective-C cơ bản, bao gồm Giống như C, Swift sử dụng các biến để lưu trữ và tham chiếu đến các giá trị bằng một tên xác định. Swift cũng sử dụng rộng rãi các biến có giá trị không thể thay đổi. Chúng được gọi là hằng số và mạnh hơn nhiều so với hằng số trong C. Các hằng số được sử dụng xuyên suốt Swift để làm cho mã an toàn hơn và rõ ràng hơn khi bạn làm việc với các giá trị không cần thay đổi Ngoài các kiểu quen thuộc, Swift giới thiệu các kiểu nâng cao không có trong Objective-C, chẳng hạn như bộ dữ liệu. Bộ dữ liệu cho phép bạn tạo và chuyển qua các nhóm giá trị. Bạn có thể sử dụng một bộ để trả về nhiều giá trị từ một hàm dưới dạng một giá trị phức hợp duy nhất Swift cũng giới thiệu các loại tùy chọn, xử lý việc không có giá trị. Các tùy chọn cho biết "có một giá trị và nó bằng x" hoặc "không có giá trị nào cả". Sử dụng tùy chọn tương tự như sử dụng Swift là một ngôn ngữ an toàn về kiểu, có nghĩa là ngôn ngữ này giúp bạn hiểu rõ về các loại giá trị mà mã của bạn có thể làm việc với. Nếu một phần mã của bạn yêu cầu một Hằng và biếnCác hằng số và biến liên kết một tên (chẳng hạn như Khai báo hằng và biếnHằng và biến phải được khai báo trước khi sử dụng. Bạn khai báo hằng với từ khóa
Mã này có thể được đọc là “Khai báo một hằng số mới có tên là Trong ví dụ này, số lần thử đăng nhập được phép tối đa được khai báo là một hằng số vì giá trị tối đa không bao giờ thay đổi. Bộ đếm số lần đăng nhập hiện tại được khai báo là một biến, vì giá trị này phải được tăng lên sau mỗi lần đăng nhập không thành công Bạn có thể khai báo nhiều hằng hoặc nhiều biến trên một dòng, cách nhau bởi dấu phẩy
Ghi chú Nếu giá trị được lưu trữ trong mã của bạn không thay đổi, hãy luôn khai báo giá trị đó là hằng số với từ khóa Loại chú thíchBạn có thể cung cấp chú thích kiểu khi khai báo một hằng hoặc biến, để hiểu rõ về loại giá trị mà hằng hoặc biến có thể lưu trữ. Viết chú thích kiểu bằng cách đặt dấu hai chấm sau tên hằng hoặc tên biến, theo sau là khoảng trắng, sau đó là tên của kiểu sẽ sử dụng Ví dụ này cung cấp một chú thích kiểu cho một biến có tên là
Dấu hai chấm trong phần khai báo có nghĩa là “…loại…,” vì vậy đoạn mã trên có thể được đọc là “Khai báo một biến tên là Cụm từ “thuộc loại Biến
Bạn có thể xác định nhiều biến liên quan cùng loại trên một dòng, được phân tách bằng dấu phẩy, với một chú thích loại duy nhất sau tên biến cuối cùng
Ghi chú Rất hiếm khi bạn cần viết chú thích loại trong thực tế. Nếu bạn cung cấp một giá trị ban đầu cho một hằng số hoặc biến tại thời điểm mà nó được xác định, Swift hầu như luôn có thể suy ra loại được sử dụng cho hằng số hoặc biến đó, như được mô tả trong. Trong ví dụ về Đặt tên cho hằng và biếnTên hằng và tên biến có thể chứa hầu hết mọi ký tự, kể cả ký tự Unicode
Tên hằng và tên biến không được chứa ký tự khoảng trắng, ký hiệu toán học, mũi tên, giá trị vô hướng Unicode sử dụng riêng hoặc ký tự vẽ đường và hộp. Họ cũng không thể bắt đầu bằng một số, mặc dù các số có thể được bao gồm ở nơi khác trong tên Khi bạn đã khai báo một hằng số hoặc biến thuộc một loại nhất định, bạn không thể khai báo lại nó với cùng tên hoặc thay đổi nó để lưu trữ các giá trị của một loại khác. Bạn cũng không thể thay đổi hằng thành biến hoặc biến thành hằng Ghi chú Nếu bạn cần đặt một hằng số hoặc biến có cùng tên với từ khóa Swift dành riêng, hãy bao quanh từ khóa đó bằng dấu gạch ngược ( Bạn có thể thay đổi giá trị của biến hiện có thành giá trị khác của loại tương thích. Trong ví dụ này, giá trị của
Không giống như biến, giá trị của hằng số không thể thay đổi sau khi nó được đặt. Cố gắng làm như vậy được thông báo là có lỗi khi mã của bạn được biên dịch
In Hằng và BiếnBạn có thể in giá trị hiện tại của hằng hoặc biến bằng hàm
Hàm Swift sử dụng phép nội suy chuỗi để bao gồm tên của hằng hoặc biến làm trình giữ chỗ trong chuỗi dài hơn và để nhắc Swift thay thế bằng giá trị hiện tại của hằng hoặc biến đó. Gói tên trong ngoặc đơn và thoát nó bằng dấu gạch chéo ngược trước dấu ngoặc đơn mở
Ghi chú Tất cả các tùy chọn bạn có thể sử dụng với phép nội suy chuỗi được mô tả trong Bình luậnSử dụng nhận xét để bao gồm văn bản không thể thực thi được trong mã của bạn, như một ghi chú hoặc lời nhắc nhở cho chính bạn. Nhận xét bị trình biên dịch Swift bỏ qua khi mã của bạn được biên dịch Nhận xét trong Swift rất giống với nhận xét trong C. Nhận xét một dòng bắt đầu bằng hai dấu gạch chéo (
Nhận xét nhiều dòng bắt đầu bằng dấu gạch chéo lên, theo sau là dấu hoa thị (
Không giống như chú thích nhiều dòng trong C, chú thích nhiều dòng trong Swift có thể được lồng vào bên trong chú thích nhiều dòng khác. Bạn viết các chú thích lồng nhau bằng cách bắt đầu một khối chú thích nhiều dòng và sau đó bắt đầu một chú thích nhiều dòng thứ hai trong khối đầu tiên. Khối thứ hai sau đó được đóng lại, tiếp theo là khối thứ nhất
Nhận xét nhiều dòng lồng nhau cho phép bạn nhận xét các khối mã lớn một cách nhanh chóng và dễ dàng, ngay cả khi mã đã chứa nhận xét nhiều dòng dấu chấm phẩyKhông giống như nhiều ngôn ngữ khác, Swift không yêu cầu bạn viết dấu chấm phẩy (
số nguyênSố nguyên là số nguyên không có thành phần phân số, chẳng hạn như Swift cung cấp số nguyên có dấu và không dấu ở dạng 8, 16, 32 và 64 bit. Các số nguyên này tuân theo quy ước đặt tên tương tự như C, trong đó số nguyên không dấu 8 bit thuộc loại giới hạn số nguyênBạn có thể truy cập các giá trị tối thiểu và tối đa của từng loại số nguyên với các thuộc tính
Các giá trị của các thuộc tính này thuộc loại số có kích thước phù hợp (chẳng hạn như số nguyênTrong hầu hết các trường hợp, bạn không cần chọn kích thước số nguyên cụ thể để sử dụng trong mã của mình. Swift cung cấp một loại số nguyên bổ sung,
Trừ khi bạn cần làm việc với kích thước số nguyên cụ thể, hãy luôn sử dụng UIntSwift cũng cung cấp một loại số nguyên không dấu,
Ghi chú Chỉ sử dụng Số dấu phẩy độngSố dấu phẩy động là số có thành phần phân số, chẳng hạn như Các loại dấu phẩy động có thể biểu thị phạm vi giá trị rộng hơn nhiều so với các loại số nguyên và có thể lưu trữ các số lớn hơn hoặc nhỏ hơn nhiều so với có thể được lưu trữ trong một
Ghi chú
Loại an toàn và loại suy luậnSwift là ngôn ngữ an toàn kiểu. Ngôn ngữ an toàn loại khuyến khích bạn hiểu rõ về các loại giá trị mà mã của bạn có thể làm việc với. Nếu một phần mã của bạn yêu cầu một Vì Swift là loại an toàn nên nó thực hiện kiểm tra loại khi biên dịch mã của bạn và đánh dấu mọi loại không khớp là lỗi. Điều này cho phép bạn phát hiện và sửa lỗi sớm nhất có thể trong quá trình phát triển Kiểm tra kiểu giúp bạn tránh lỗi khi làm việc với các kiểu giá trị khác nhau. Tuy nhiên, điều này không có nghĩa là bạn phải chỉ định kiểu của mọi hằng và biến mà bạn khai báo. Nếu bạn không chỉ định loại giá trị mình cần, Swift sẽ sử dụng suy luận kiểu để tìm ra loại phù hợp. Suy luận kiểu cho phép trình biên dịch tự động suy ra kiểu của một biểu thức cụ thể khi nó biên dịch mã của bạn, chỉ bằng cách kiểm tra các giá trị bạn cung cấp Do suy luận kiểu, Swift yêu cầu khai báo kiểu ít hơn nhiều so với các ngôn ngữ như C hoặc Objective-C. Các hằng số và biến vẫn được nhập rõ ràng, nhưng phần lớn công việc xác định loại của chúng đã được thực hiện cho bạn Suy luận kiểu đặc biệt hữu ích khi bạn khai báo một hằng hoặc biến có giá trị ban đầu. Điều này thường được thực hiện bằng cách gán một giá trị theo nghĩa đen (hoặc theo nghĩa đen) cho hằng số hoặc biến tại thời điểm bạn khai báo nó. (Giá trị theo nghĩa đen là giá trị xuất hiện trực tiếp trong mã nguồn của bạn, chẳng hạn như Ví dụ: nếu bạn gán một giá trị bằng chữ là
Tương tự như vậy, nếu bạn không chỉ định loại cho ký tự dấu chấm động, Swift sẽ suy ra rằng bạn muốn tạo một
Swift luôn chọn Nếu bạn kết hợp các ký tự số nguyên và dấu phẩy động trong một biểu thức, một loại
Giá trị bằng chữ của chữ sốChữ số nguyên có thể được viết là
Tất cả các số nguyên này có giá trị thập phân là
Các chữ số dấu phẩy động có thể là số thập phân (không có tiền tố) hoặc thập lục phân (có tiền tố Đối với các số thập phân có số mũ là
Đối với các số thập lục phân có số mũ là
Tất cả các chữ số dấu phẩy động này có giá trị thập phân là
Chữ số có thể chứa định dạng bổ sung để giúp chúng dễ đọc hơn. Cả số nguyên và số float đều có thể được đệm thêm số 0 và có thể chứa dấu gạch dưới để giúp dễ đọc. Cả hai loại định dạng đều không ảnh hưởng đến giá trị cơ bản của nghĩa đen
Chuyển đổi kiểu sốSử dụng loại Chỉ sử dụng các loại số nguyên khác khi chúng đặc biệt cần thiết cho tác vụ hiện tại, do dữ liệu có kích thước rõ ràng từ nguồn bên ngoài hoặc để thực hiện, sử dụng bộ nhớ hoặc tối ưu hóa cần thiết khác. Sử dụng các loại có kích thước rõ ràng trong những tình huống này giúp nắm bắt bất kỳ giá trị vô tình nào bị tràn và ghi lại bản chất của dữ liệu đang được sử dụng Chuyển đổi số nguyênPhạm vi của các số có thể được lưu trữ trong một hằng hoặc biến số nguyên là khác nhau đối với từng loại số. Hằng hoặc biến
Vì mỗi loại số có thể lưu trữ một phạm vi giá trị khác nhau nên bạn phải chọn tham gia chuyển đổi loại số trong từng trường hợp cụ thể. Phương pháp chọn tham gia này ngăn ngừa các lỗi chuyển đổi ẩn và giúp làm rõ ý định chuyển đổi loại trong mã của bạn Để chuyển đổi một loại số cụ thể sang loại số khác, bạn khởi tạo một số mới của loại mong muốn với giá trị hiện có. Trong ví dụ bên dưới, hằng số
Bởi vì cả hai bên của phần bổ sung hiện thuộc loại
Chuyển đổi số nguyên và dấu phẩy độngChuyển đổi giữa các loại số nguyên và số dấu phẩy động phải được thực hiện rõ ràng
Ở đây, giá trị của hằng số Chuyển đổi dấu phẩy động thành số nguyên cũng phải được thực hiện rõ ràng. Một kiểu số nguyên có thể được khởi tạo với giá trị
Các giá trị dấu phẩy động luôn bị cắt bớt khi được sử dụng để khởi tạo một giá trị số nguyên mới theo cách này. Điều này có nghĩa là Ghi chú Quy tắc kết hợp hằng số và biến số khác với quy tắc kết hợp chữ số. Giá trị bằng chữ Nhập bí danhLoại bí danh xác định tên thay thế cho loại hiện có. Bạn xác định bí danh loại với từ khóa Bí danh loại hữu ích khi bạn muốn tham chiếu đến một loại hiện có bằng tên phù hợp hơn theo ngữ cảnh, chẳng hạn như khi làm việc với dữ liệu có kích thước cụ thể từ nguồn bên ngoài
Khi bạn xác định bí danh loại, bạn có thể sử dụng bí danh ở bất kỳ đâu mà bạn có thể sử dụng tên gốc
Ở đây, BooleansSwift có một kiểu Boolean cơ bản, được gọi là
Các loại Các giá trị Boolean đặc biệt hữu ích khi bạn làm việc với các câu lệnh có điều kiện, chẳng hạn như câu lệnh
Các câu lệnh có điều kiện như câu lệnh Loại an toàn của Swift ngăn các giá trị không phải Boolean được thay thế cho
Tuy nhiên, ví dụ thay thế dưới đây là hợp lệ
Kết quả của phép so sánh Cũng như các ví dụ khác về an toàn kiểu trong Swift, cách tiếp cận này tránh được các lỗi ngẫu nhiên và đảm bảo rằng mục đích của một đoạn mã cụ thể luôn rõ ràng bộ dữ liệuBộ dữ liệu nhóm nhiều giá trị thành một giá trị ghép duy nhất. Các giá trị trong một bộ có thể thuộc bất kỳ loại nào và không nhất thiết phải cùng loại với nhau Trong ví dụ này,
Bộ dữ liệu Bạn có thể tạo các bộ dữ liệu từ bất kỳ hoán vị nào của các loại và chúng có thể chứa bao nhiêu loại khác nhau tùy thích. Không có gì ngăn cản bạn có một bộ dữ liệu kiểu Bạn có thể phân tách nội dung của bộ dữ liệu thành các hằng số hoặc biến riêng biệt, sau đó bạn truy cập như bình thường
Nếu bạn chỉ cần một số giá trị của bộ dữ liệu, hãy bỏ qua các phần của bộ dữ liệu có dấu gạch dưới (
Ngoài ra, truy cập các giá trị phần tử riêng lẻ trong một bộ bằng cách sử dụng các số chỉ mục bắt đầu từ 0
Bạn có thể đặt tên cho các phần tử riêng lẻ trong một bộ khi bộ được xác định
Nếu bạn đặt tên cho các phần tử trong một bộ, bạn có thể sử dụng tên phần tử để truy cập các giá trị của các phần tử đó
Các bộ dữ liệu đặc biệt hữu ích như các giá trị trả về của các hàm. Một chức năng cố gắng truy xuất một trang web có thể trả về loại bộ dữ liệu Ghi chú Bộ dữ liệu hữu ích cho các nhóm giá trị liên quan đơn giản. Chúng không phù hợp với việc tạo cấu trúc dữ liệu phức tạp. Nếu cấu trúc dữ liệu của bạn có thể phức tạp hơn, hãy mô hình hóa nó dưới dạng một lớp hoặc cấu trúc, thay vì dưới dạng một bộ. Để biết thêm thông tin, hãy xem Cấu trúc và lớp . tùy chọnBạn sử dụng tùy chọn trong trường hợp có thể không có giá trị. Một tùy chọn đại diện cho hai khả năng. Có một giá trị và bạn có thể mở tùy chọn để truy cập giá trị đó hoặc không có giá trị nào cả Ghi chú Khái niệm về tùy chọn không tồn tại trong C hoặc Objective-C. Điều gần nhất trong Mục tiêu-C là khả năng trả về Đây là một ví dụ về cách tùy chọn có thể được sử dụng để đối phó với việc không có giá trị. Loại Ví dụ bên dưới sử dụng trình khởi tạo để cố gắng chuyển đổi một
Bởi vì trình khởi tạo có thể bị lỗi, nên nó trả về một khôngBạn đặt biến tùy chọn thành trạng thái vô giá trị bằng cách gán cho nó giá trị đặc biệt
Ghi chú Bạn không thể sử dụng Nếu bạn xác định một biến tùy chọn mà không cung cấp giá trị mặc định, thì biến đó sẽ tự động được đặt thành
Ghi chú
Câu lệnh If và Unwrapping bắt buộcBạn có thể sử dụng câu lệnh Nếu một tùy chọn có giá trị, nó được coi là “không bằng”
Khi bạn chắc chắn rằng tùy chọn có chứa giá trị, bạn có thể truy cập giá trị cơ bản của nó bằng cách thêm dấu chấm than (
Để biết thêm về câu lệnh Ghi chú Cố gắng sử dụng Ràng buộc tùy chọnBạn sử dụng liên kết tùy chọn để tìm hiểu xem tùy chọn có chứa giá trị hay không và nếu có, để cung cấp giá trị đó dưới dạng hằng số hoặc biến tạm thời. Liên kết tùy chọn có thể được sử dụng với các câu lệnh Viết ràng buộc tùy chọn cho câu lệnh
Bạn có thể viết lại ví dụ
Mã này có thể được đọc là “Nếu Nếu chuyển đổi thành công, hằng số Nếu bạn không cần tham chiếu đến hằng số hoặc biến tùy chọn ban đầu sau khi truy cập giá trị mà nó chứa, bạn có thể sử dụng cùng một tên cho hằng số hoặc biến mới
Mã này bắt đầu bằng cách kiểm tra xem Vì loại mã này rất phổ biến nên bạn có thể sử dụng cách viết ngắn hơn để mở khóa một giá trị tùy chọn. chỉ viết tên của hằng số hoặc biến mà bạn đang mở gói. Hằng số hoặc biến mới, chưa được bao bọc hoàn toàn sử dụng cùng tên với giá trị tùy chọn
Bạn có thể sử dụng cả hằng và biến với liên kết tùy chọn. Nếu bạn muốn thao tác giá trị của Bạn có thể bao gồm bao nhiêu ràng buộc tùy chọn và điều kiện Boolean trong một câu lệnh
Ghi chú Các hằng số và biến được tạo với liên kết tùy chọn trong câu lệnh Các tùy chọn được mở hoàn toànNhư đã mô tả ở trên, tùy chọn chỉ ra rằng một hằng số hoặc biến được phép có “không có giá trị”. Có thể kiểm tra các tùy chọn bằng câu lệnh Đôi khi, rõ ràng từ cấu trúc của chương trình rằng một tùy chọn sẽ luôn có một giá trị, sau khi giá trị đó được đặt lần đầu tiên. Trong những trường hợp này, sẽ rất hữu ích nếu bạn loại bỏ nhu cầu kiểm tra và mở gói giá trị của tùy chọn mỗi khi nó được truy cập, bởi vì nó có thể được coi là luôn có giá trị một cách an toàn Các loại tùy chọn này được định nghĩa là các tùy chọn không được bao bọc hoàn toàn. Bạn viết một tùy chọn không được bao bọc hoàn toàn bằng cách đặt dấu chấm than ( Các tùy chọn được mở hoàn toàn hữu ích khi giá trị của một tùy chọn được xác nhận là tồn tại ngay sau khi tùy chọn được xác định lần đầu và chắc chắn có thể được coi là tồn tại ở mọi thời điểm sau đó. Việc sử dụng chính các tùy chọn được mở hoàn toàn trong Swift là trong quá trình khởi tạo lớp, như được mô tả trong Tùy chọn chưa mở gói hoàn toàn là một tùy chọn bình thường ẩn sau hậu trường, nhưng cũng có thể được sử dụng như một giá trị không phải tùy chọn mà không cần mở gói giá trị tùy chọn mỗi khi nó được truy cập. Ví dụ sau đây cho thấy sự khác biệt trong hành vi giữa một chuỗi tùy chọn và một chuỗi tùy chọn không được bao bọc hoàn toàn khi truy cập giá trị được bao bọc của chúng dưới dạng một
Bạn có thể nghĩ về một tùy chọn được mở hoàn toàn khi cho phép tùy chọn được mở ra nếu cần. Khi bạn sử dụng một giá trị tùy chọn không bao bọc hoàn toàn, trước tiên Swift sẽ cố gắng sử dụng nó như một giá trị tùy chọn thông thường; . Trong đoạn mã trên, giá trị tùy chọn
Nếu một tùy chọn chưa được bao bọc hoàn toàn là Bạn có thể kiểm tra xem một tùy chọn không bao bọc hoàn toàn có phải là
Bạn cũng có thể sử dụng một tùy chọn được mở hoàn toàn với ràng buộc tùy chọn, để kiểm tra và mở giá trị của nó trong một câu lệnh
Ghi chú Không sử dụng một tùy chọn không được bao bọc hoàn toàn khi có khả năng một biến trở thành Xử lý lỗiBạn sử dụng xử lý lỗi để phản hồi các điều kiện lỗi mà chương trình của bạn có thể gặp phải trong quá trình thực thi Ngược lại với các tùy chọn, có thể sử dụng sự hiện diện hoặc vắng mặt của một giá trị để thông báo thành công hay thất bại của một chức năng, việc xử lý lỗi cho phép bạn xác định nguyên nhân cơ bản của lỗi và, nếu cần, truyền lỗi đến một phần khác của chương trình của bạn Khi một hàm gặp điều kiện lỗi, nó sẽ báo lỗi. Sau đó, người gọi chức năng đó có thể bắt lỗi và phản hồi một cách thích hợp
Một hàm chỉ ra rằng nó có thể đưa ra lỗi bằng cách đưa từ khóa Swift tự động lan truyền lỗi ra khỏi phạm vi hiện tại của chúng cho đến khi chúng được xử lý bởi mệnh đề
Một câu lệnh Dưới đây là một ví dụ về cách xử lý lỗi có thể được sử dụng để đáp ứng các điều kiện lỗi khác nhau
Trong ví dụ này, hàm Nếu không có lỗi xảy ra, hàm Việc ném, bắt và lan truyền lỗi được trình bày chi tiết hơn trong Xử lý lỗi . Khẳng định và điều kiện tiên quyếtCác xác nhận và điều kiện tiên quyết là các kiểm tra xảy ra trong thời gian chạy. Bạn sử dụng chúng để đảm bảo một điều kiện thiết yếu được thỏa mãn trước khi thực hiện bất kỳ mã nào khác. Nếu điều kiện Boolean trong xác nhận hoặc điều kiện tiên quyết ước tính là Bạn sử dụng các xác nhận và điều kiện tiên quyết để diễn đạt các giả định mà bạn đưa ra và các kỳ vọng mà bạn có trong khi viết mã, vì vậy bạn có thể đưa chúng vào như một phần của mã của mình. Các xác nhận giúp bạn tìm ra các lỗi và giả định không chính xác trong quá trình phát triển và các điều kiện tiên quyết giúp bạn phát hiện các vấn đề trong quá trình sản xuất Ngoài việc xác minh kỳ vọng của bạn trong thời gian chạy, các xác nhận và điều kiện tiên quyết cũng trở thành một dạng tài liệu hữu ích trong mã. Không giống như các điều kiện lỗi được thảo luận ở trên, các xác nhận và điều kiện tiên quyết không được sử dụng cho các lỗi có thể khôi phục hoặc dự kiến. Vì một xác nhận hoặc điều kiện tiên quyết không thành công cho biết trạng thái chương trình không hợp lệ, nên không có cách nào để bắt một xác nhận không thành công Việc sử dụng các xác nhận và điều kiện tiên quyết không phải là sự thay thế cho việc thiết kế mã của bạn theo cách mà các điều kiện không hợp lệ khó có thể phát sinh. Tuy nhiên, việc sử dụng chúng để thực thi dữ liệu và trạng thái hợp lệ sẽ khiến ứng dụng của bạn chấm dứt dễ đoán hơn nếu xảy ra trạng thái không hợp lệ và giúp gỡ lỗi vấn đề dễ dàng hơn. Dừng thực thi ngay khi phát hiện trạng thái không hợp lệ cũng giúp hạn chế thiệt hại do trạng thái không hợp lệ đó gây ra Sự khác biệt giữa các xác nhận và điều kiện tiên quyết là khi chúng được kiểm tra. Các xác nhận chỉ được kiểm tra trong các bản dựng gỡ lỗi, nhưng các điều kiện tiên quyết được kiểm tra trong cả bản dựng gỡ lỗi và sản xuất. Trong các bản dựng sản xuất, điều kiện bên trong một xác nhận không được đánh giá. Điều này có nghĩa là bạn có thể sử dụng bao nhiêu xác nhận tùy thích trong quá trình phát triển của mình mà không ảnh hưởng đến hiệu suất trong sản xuất Gỡ lỗi với các xác nhậnBạn viết một xác nhận bằng cách gọi hàm
Trong ví dụ này, việc thực thi mã tiếp tục nếu Bạn có thể bỏ qua thông báo xác nhận—ví dụ: khi nó chỉ lặp lại điều kiện dưới dạng văn xuôi
Nếu mã đã kiểm tra điều kiện, bạn sử dụng hàm
Thực thi các điều kiện tiên quyếtSử dụng điều kiện tiên quyết bất cứ khi nào điều kiện có khả năng sai, nhưng chắc chắn phải đúng để mã của bạn tiếp tục thực thi. Ví dụ: sử dụng điều kiện tiên quyết để kiểm tra xem chỉ số dưới có nằm ngoài giới hạn hay không hoặc để kiểm tra xem một hàm đã được chuyển một giá trị hợp lệ chưa Bạn viết một điều kiện tiên quyết bằng cách gọi hàm
Bạn cũng có thể gọi hàm Ghi chú Nếu bạn biên dịch ở chế độ không được chọn (______1300), các điều kiện tiên quyết sẽ không được chọn. Trình biên dịch giả định rằng các điều kiện tiên quyết luôn đúng và nó sẽ tối ưu hóa mã của bạn cho phù hợp. Tuy nhiên, chức năng Bạn có thể sử dụng hàm |