So sánh giữ Dart và Swift
Dart và Swift là hai ngôn ngữ lập trình yêu thích của tôi, và bài viết này tôi sẽ só sánh điểm giống và khác nhau giữa Dart và Swift nhằm múc đích:
Chỉ ra chi tiết các điểm khác biệt giữa 2 ngôn ngữ
Để cho các bạn có thể chuyển từ ngôn ngữ này sang ngôn ngữ khác (hoặc sử dụng cả hai).
Một số đinh nghĩa
Dart thường được dùng cho Flutter (Một Framework của Google để xây dựng các ứng dụng native tuyệt đẹp chỉ bằng 1 mã duy nhất)
Swift thường được dùng cho SDK của Apple để phát triển các ưng dụng trên IOS, macOS, tvOS và watchOS.
Các so sánh sau đây được thực hiện trên các tính năng chính của cả hai ngôn ngữ (từ Dart 2.1 và Swift 4.2) Khi có các phần liên quan đến từng tính năng chuyên sâu nằm ngoài phạm vi của bài viết này, tôi sẽ đính kèm các tài liệu tham khảo để các bạn có thể đọc thêm.
Bảng so sánh

Variables
Variable declaration
Dart:
Switf:
Variable initialization
Dart:
Switf:
Type inference
Type inference
Có thể được viết như này trong Dart:
Và kiểu của arguments
sẽ tự động được định nghĩa bở compiler.
Trong Swift được viết tưng tự:
Một số chi tiết
Dynamic types
Một variable có thể là bất kỳ kiểu dữ liệu nào khi được khai báo với từ khóa dynamic
với Dart và Any
đối với Switf
Kiểu Dynamic thường được dùng khi đọc data từ SON
Mutable / immutable variables
Variables có thể được khai báo là mutable hoặc immutable.
Mutable
Khi khai báo variables kiểu Mutable, thì cả hai ngôn ngữ đều sử dụng từ khóa var
Dart
Swift
Immutable
Khi khai báo variables kiểu Immutable, Dart sử dụng final
, và Swift sử dụng let
.
Dart
Swift
Trong Dart documentation có định nghĩa hai từ khóa, final
và cost
, hoạt động như sau:
Và được giải thích kỹ hơn trong bài viết trên website của Dart
Sử dụng final
để định nghĩa Immutable variables trong Dart
Trong Swift, chúng được định nghĩa constants với từ khóa let
Đọc thêm: Swift Declarations
Functions
Functions là first-class citizens trong Swift và Dart
Điều này có nghĩa là giống như các objecs, functions có thể truyền dưới dạng arguments và được lưu dưới dạng properties hoặc kết quả trả về.
Bước đầu so sánh, chúng ta sẽ khởi tạo các functions không có arguments.
Trong Dart, các kiểu trả về được đặt trước tên của method:
Trong Swift, chúng ta sử dụng -> T
làm ký hiệu hậu tố. Điều này không bắt buộc nếu nó trả về giá trị void
:
Đọc thêm:
Named và un-named parameters
Cả hai ngôn ngữ đều hỗ trợ named và un-named parameters
Named
Trong Dart, chúng ta định nghĩa named parameters trong dấu ({}
):
Trong Swift, named parameters là mặc định:
Un-named
Trong Dart, chúng ta định nghĩa un-named parameters bằng cách bỏ dấu ({}
):
Trong Swift, chúng ta định nghĩa un-named parameters bằng cách sử dụng dấu (_
):
Đọc thêm: Function Argument Labels and Parameter Names trong Swift.
Optional và default parameters
Cả hai ngôn ngữ đều hỗ trợ default parameters
Đọc thêm: - Default Parameter Values trong Swift.
Trong Dart, optional parameters có thể là positional hoặc named, nhưng không thể là cả 2.
Đọc thêm: Optional parameters trong Dart.
Closures
Là first-class objecs, functions có thể được chuyền dưới dạng arguments cho các functions khác, hoặc gán cho các variables.