KIẾN THỨC CƠ BẢN VỀ DART(PHẦN 2)

by doanquyet
434 views

Tiếp tục phần 1, sang phần 2 này ta sẽ tìm hiểu về các toán tử có trong Dart.

Operators

Dart có tất cả các toán tử thông thường mà bạn quen thuộc từ các ngôn ngữ khác như C, Swift và Kotlin.

Một số ví dụ về các toán tử của Dart bao gồm:

  • Toán tử số học
  • Toán tử so sánh
  • Toán tử logic

Lưu ý : Dart cũng cho phép nạp chồng toán tử , như trong C ++ và Kotlin, nhưng điều đó nằm ngoài phạm vi của hướng dẫn này. Để tìm hiểu thêm về chủ đề này, hãy truy cập trang operator overloading của Wikipedia .

Tiếp theo, bạn sẽ xem xét từng toán tử này.

Toán tử số học

Các toán tử số học hoạt động giống như bạn mong đợi. Hãy thử chúng bằng cách thêm một loạt các thao tác vào DartPad của bạn:

in ( 40 + 2 ); // 42 

print ( 44 - 2 ); // 42 

print ( 21 * 2 ); // 

42 print ( 84/2 ) ; // 42.0

Đối với phép chia, ngay cả với số nguyên, Dart suy ra biến kết quả là a double. Đó là lý do tại sao bạn nhận được 42.0 thay vì 42 cho print câu lệnh cuối cùng.

So sánh bằng

Dart sử dụng toán tử double-equals ( ==) và not-equals ( !=):

in ( 42 == 43 ); // 

in sai ( 42 ! = 43 ); // true

Toán tử so sánh

Dart sử dụng các toán tử so sánh điển hình:

  • Nhỏ hơn (<)
  • Lớn hơn (>)
  • Lơn hơn hoặc bằng(>=)
  • Nhỏ hơn hoặc bằng(<=)

Dưới đây là một số ví dụ:

print ( 42 < 43 ); // true 
print (42> = 43); // false

Ngoài ra, nó cũng sử dụng các toán tử số học / phép gán ghép thông thường:

var value = 42.0;

value += 1; print(value); // 43.0

value -= 1; print(value); // 42.0

value *= 2; print(value); // 84.0

value /= 2; print(value); // 42.0


Toán tử số học / phép gán ghép thực hiện hai nhiệm vụ. +=thêm giá trị ở bên phải vào biến ở bên trái và sau đó gán kết quả cho biến.

Một dạng rút gọn của += 1 là ++:

value++;

print(value); // 43.0

Và Dart có toán tử modulo thông thường ( %) để trả về phần còn lại sau khi một số đã được chia cho một số khác:

print( 392 % 50 ); // 42

392 ÷ 50 = 7,84 nhưng 42 đó trong ngăn kết quả đến từ đâu? Nó dễ dàng hơn để xem với sự phân chia dài.

Toán tử logic

Dart sử dụng các toán tử logic giống như các ngôn ngữ khác, bao gồm và có kí hiệu là &&, OR  có kí hiệu là ||

print (( 41 < 42 ) && ( 42 < 43 )); // true 

print (( 41 < 42 ) || ( 42 > 43 )); // true

Toán tử phủ định là dấu chấm than , biến false thành true và true thành false.

print (! ( 41 < 42 )); // false

Xem tài liệu Dart để biết danh sách đầy đủ các toán tử được hỗ trợ .

Strings

Loại chuỗi Dart là String. Các chuỗi được thể hiện trong Dart bằng cách sử dụng văn bản được bao quanh bởi dấu ngoặc kép đơn hoặc kép .

Bạn có thể sử dụng var và nhập suy luận hoặc String để tạo biến chuỗi, giống như các kiểu khác mà bạn đã thấy:

var firstName = 'Albert' ; String lastName = "Einstein" ;



Tương tự như các ngôn ngữ như Kotlin và Swift, bạn có thể nhúng giá trị của một biểu thức bên trong một chuỗi bằng cách sử dụng ký hiệu ký hiệu đô la: $ { biểu thức } .

Nếu biểu thức là một số nhận dạng, bạn có thể bỏ qua dấu {} . Thêm những điều sau:

var physicist = "$firstName $lastName likes the number ${84 / 2}";

print(physicist); // Albert Einstein

$firstName và $lastName được thay thế bằng các giá trị biến. Trả về kết quả được tính toán.

Escaping Strings

Các trình tự thoát được sử dụng trong Dart tương tự như các trình tự được sử dụng trong các ngôn ngữ giống C khác. Ví dụ, bạn sử dụng \n cho một dòng mới.

Nếu có các ký tự đặc biệt trong chuỗi, hãy sử dụng \ để thoát khỏi chúng:

var quote = 'If you can\'t explain it simply\nyou don\'t understand it well enough.';

print(quote);
// If you can't explain it simply

// you don't understand it well enough.

Ví dụ này sử dụng các dấu ngoặc kép, vì vậy nó cần một chuỗi thoát \', để nhúng các dấu nháy đơn cho can’t và don’t vào chuỗi. Bạn sẽ không cần phải thoát khỏi dấu nháy đơn nếu thay vào đó bạn sử dụng dấu ngoặc kép.

Nếu bạn cần hiển thị trình tự thoát trong chuỗi, bạn có thể sử dụng raw strings , có tiền tố là r.

var rawString = r"If you can't explain it simply\nyou don't understand it well enough.";

print(rawString); 

// If you can't explain it simply\nyou don't understand it well enough.

Ở đây, Dart được coi `\n`là văn bản bình thường vì chuỗi bắt đầu bằng r.

Nhấp vào RUN trong DartPad để xem tất cả các chuỗi của bạn trong bảng điều khiển.

Immutability

Dart sử dụng các từ khóa constvà finalcác giá trị không thay đổi.

Sử dụng constcho các giá trị đã biết tại thời điểm biên dịch. Sử dụng finalcho các giá trị không cần biết tại thời điểm biên dịch nhưng không thể gán lại sau khi được khởi tạo.Lưu ý : finalhoạt động giống như valtrong Kotlin hoặc lettrong Swift.

Bạn có thể sử dụng constvà finalthay cho varvà để phép suy luận kiểu xác định kiểu:

const speedOfLight = 299792458 ;

in (speedOfLight); // 299792458

Ở đây, Dart cho rằng speedOfLight là một biến kiểu int, như bạn có thể thấy trong bảng thông tin của DartPad.

final cho biết rằng một biến là không thể thay đổi , nghĩa là bạn không thể gán lại final các giá trị. Bạn có thể nêu rõ loại với một trong hai final hoặc const:

final planet = 'Jupiter';

// planet = 'Mars';

// error: planet chỉ có thể khởi tạo 1 lần

final String moon = 'Europa';

print('$planet has a moon, $moon');

// Jupiter has a moon, Europa

Nullability

Trước đây, nếu bạn không khởi tạo một biến, Dart đã cấp cho nó giá trị null, có nghĩa là không có gì được lưu trữ trong biến. Tuy nhiên, kể từ Dart 2.12, Dart kết hợp với các ngôn ngữ khác, như Swift và Kotlin, để không thể null theo mặc định.

Ngoài ra, Dart đảm bảo rằng kiểu không thể null sẽ không bao giờ chứa giá trị null. Điều này được gọi là sound null safety. .

Thông thường, nếu bạn muốn khai báo một biến, bạn phải khởi tạo nó:

String middleName = 'May';

print(middleName); // May

Tuy nhiên, không phải tất cả mọi người đều có tên đệm, vì vậy việc tạo middleName một giá trị vô hiệu là rất hợp lý. Để nói với Dart rằng bạn muốn cho phép giá trị null, hãy thêm ? vào sau kiểu giữ liểu.

String? middleName = null;

print(middleName); // null

Giá trị mặc định cho kiểu nullable là null, vì vậy bạn có thể đơn giản hóa biểu thức thành như sau:

String? middleName;

print(middleName); // null

Run nó và null in ra bảng điều khiển.

Toán tử Null-Aware

Dart có một số toán tử nhận biết null mà bạn có thể sử dụng khi làm việc với các giá trị null.

Toán tử dấu hỏi kép ?? giống như toán tử Elvis trong Kotlin: Nó trả về toán hạng bên trái nếu đối tượng không phải là null. Nếu không, nó trả về giá trị bên phải:

var name = middleName ?? 'none';

print(name); // none

Vì middleName là null, Dart chỉ định giá trị bên phải của 'none'.

Toán tử ?. bảo vệ bạn khỏi việc truy cập các thuộc tính của các đối tượng null. Nó trả về null nếu bản thân đối tượng là null. Nếu không, nó trả về giá trị của thuộc tính ở phía bên phải:

print(middleName?.length); // null

Ngày trước khi chưa có null safety, nếu bạn quên dấu chấm hỏi và viết middleName.length, ứng dụng của bạn sẽ gặp sự cố trong thời gian chạy nếu middleNametrống. Đó không còn là vấn đề nữa, vì Dart giờ đây sẽ cho bạn biết ngay lập tức khi nào bạn cần xử lý các giá trị null.

Kết thúc phần 2.

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

You may also like