Chương trình Dart đơn giản
Đây là một chương trình Dart đơn giản, lưu nó thành file basic.dart
, đặt nó trong một thư mục dự án mới
là theo hướng dẫn ở phần Cài đặt SDK Dart để tạo launch.json
trong VS Code, rồi nhấn Ctrl + F5
chạy thử
import 'dart:math'; //Nạp thư viện ///Hàm tính tổng sumint /// ///Tính tổng 2 số nguyên ///trả về tổng 2 số nguyên ... sumInt(int a, int b) { return a + b; } /** * Hàm main là điểm mồi ứng dụng bắt đầu chạy từ * hàm này */ main(List<String> args) { var tong; //Khai báo một biến var a = 10; //Khai báo và khởi tạo biến luôn tong = sumInt(a, 20); //Gọi hàm sumInt print('Tổng là: $tong'); var sqrtvalue = sqrt(tong); print('Căn bậc 2 của $tong là $sqrtvalue'); }
Kết quả chạy chương trình
Từ đoạn mã trên, lưu ý một số vấn đề cơ bản nhất sau đây.
Hàm main
Một ứng dụng Dart
bắt đầu chạy từ hàm main
, hàm này bắt buộc phải có,
nó có thể có tham số như khai báo ở trên. Nếu ứng dụng không nhận tham số ở main thì có thể chỉ cần khai báo
main() { // ... }
Dart có phân biệt chữ hoa/thường nên khi đặt tên cho các thành phần hàm, biến ... cần
lưu ý. Hàm main()
và hàm maIn()
là khác nhau.
Câu lệnh, Khối lệnh
Các lệnh trong Dart
được viết mà các thành phần không bị ảnh hưởng bởi khoảng trắng,
kết thúc một câu lệnh là dấu ;
//Câu lệnh return a + b; //Viết lại như sau là tương đương return a + b;
Một nhóm các lệnh nhóm lại với nhau được gọi là một khối lệnh, trong Dart
nó sử dụng
cặp dấu {}
để tạo khối. Khối lệnh có thể lồng nhau.
if (a > 1) { //Khối lệnh 1 } else { //Khối lệnh 2 }
COMMENT - Chú thích code
Các chú thích đưa vào trong code thì không ảnh hưởng gì đến code, mục đích nó là mô tả để đọc lại dễ hiểu, có 2 loại chú thích
Chú thích 1 dòng các chữ phía sau ký hiệu //
không ảnh hưởng gì tới code
// Đây là chú thích trên 1 dòng
Chú thích nhiều dòng dòng các dòng chữ nằm giữa ký hiệu /*
và */
không ảnh hưởng gì tới code
/* Đây là chú thích nhiều dòng */
Chú thích Documentation là dòng chữ phía sau ký hiệu ///
, nó tương tự như chú thích 1 dòng, nhưng nội dung viết trong nó viết theo một quy tắc nhất định để tham khảo tới hàm, biến, lớp ... (tìm hiểu sau),
nó giống PHPDoc trong PHP. Mục đích là để sinh ra tài liệu. Ví dụ nó phát sinh ra tài liệu tham khảo, để người khác đọc tài liệu này biết sử dụng lại logic của code.
Khai báo biến với var
Các biến để lưu giữ các đối tượng, với Dart
nó cho phép khai báo biến mà không cần chỉ rõ
biến đó thuộc kiểu dữ liệu gì bằng từ khóa var
, sau này kiểu dữ liệu của biến phụ thuộc vào
đối tượng gán vào biến.
var tenbien;
Chuỗi cụ thể
Một chuỗi là tập hợp các ký tự, ở ví dụ trên lệnh print()
nhận tham số là một chuỗi
cụ thể và in nó ra. Để tạo ra chuỗi này trong code thì bạn viết chuỗi chữ đó ra trong cặp dấu nháy đơn
''
hoặc kép ""
print('Đây là một chuỗi'); print("Đây cũng là một chuỗi");
Bạn có thể đưa một giá trị trong biến vào chuỗi bằng ký hiệu $tên_biến
, hoặc chèn cả biểu thức
vào chuỗi cụ thể ${biểu_thức}
var a = 4; var y = 6; print("Giá trị a là $a"); // => 'Giá trị a là 4' print("Tổng là ${a + b}"); // => "Tổng là 10"
Nạp thư viên
Dart
cũng tổ chức code thành các thư viện, có những thư viện xây dựng sẵn như
thư viện toán dart:math
... , cần dùng thư viện nào thì nạp nó vào bằng lệnh import
.
Bạn cũng sẽ tự xây dựng các thư viện cho mình và nạp vào bằng cách này, kể cả nạp một file .dart
cũng dùng import.
import 'dart:math'; //Nạp thư viện toán //Do có nạp math, mà giờ đây có hàm tính căn bậc 2 sqrt print(sqrt(9));
Trở lại dự án trên của bạn, giờ bạn tạo ra một file khác đặt tên là banner.dart
Nội dung file có định nghĩa hàm banner()
void banner() { print("========================================================"); }
Sau đó trở lại basic.dart
, nạp file này vào bằng lệnh import 'banner.dart';
,
vậy là trong basic.dart
gọi được hàm banner();
import 'dart:math'; import 'banner.dart'; ///Hàm tính tổng sumint /// ///Tính tổng 2 số nguyên ///trả về tổng 2 số nguyên ... sumInt(int a, int b) { return a + b; } /** * Hàm main là điểm mồi ứng dụng bắt đầu chạy từ * hàm này */ main() { banner(); var tong; //Khai báo một biến var a = 10; //Khai báo và khởi tạo biến luôn tong = sumInt(a, 20); //Gọi hàm sumInt print ('Tổng là: $tong'); var sqrtvalue = sqrt(tong); print('Căn bậc 2 của $tong là $sqrtvalue'); banner(); } //Kêt quả chạy thử: ======================================================== Tổng là: 30 Căn bậc 2 của 30 là 5.477225575051661 ========================================================
Khái niệm cơ bản
Một số thông tin, khái niệm cần biết trước khi đi sau vào ngôn ngữ Dart
- Mọi thứ lưu trong biến đều là đối tượng (kể cả số, kể cả null), mọi đối tượng đều sinh ra từ định nghĩa lớp,
mọi lớp đều kế thừa từ lớp cơ sở có tên
Object
(Giống C#) - Khi biến có chấp nhận mọi kiểu thì sử dụng từ khóa
dynamic
- Dart hỗ trợ định nghĩa kiểu generic (giống C#)
- Dart cho phép định nghĩa hàm trong hàm (lồng nhau)
- Dart không có từ khóa
public, private, protected
khi khai báo phương thức, thuộc tính lớp. Nếu thuộc tính, tên lớp bắt đầu bằng_
thì hiểu đó làprivate
- Các định danh (tên biến, tên hàm, tên lớp ...)
bắt đầu
bằng chữ(a-zA-Z) hoặc_
,theo sau
là chuỗi chữ có thể kế hợp với số
Quy tắc trình bày code
Những quy tắc này không bắt buộc bạn phải tuân theo, nhưng nếu áp dụng code sẽ trở nên sáng sủa, dễ đọc và thống nhất.
- Nên đặt tên kiểu
UpperCamelCase
cho lớp, enums, tham số(chữ đầu của từ là chữ in:HttpRequest
) - Tên file, thư viện viết chữ thường, các từ nối với nhau bởi
_
:abc_xyz.dart
- Biến, hằng, object đặt tên kiểu
lowerCamelCase
, chữ đầu các từ viết IN, trừ từ đầu tiên (defaultTimeout
) - Cố gắng viết tắt khi tên trên 2 từ, lấy ký đầu viết IN để tạo chữ viết tắt (IOStream ~ InputOutputStream)