Ngôn Ngữ Lập Trình Dart Cơ Bản - 123doc
Có thể bạn quan tâm
Biến và kiểu dữ liệu trong Dart 1 Biến là gì ? Theo Wikipedia “ Trong lập trình máy tính, một biến(variable) là một vị trí lưu trữ gắn liền với một tên tượng trưng(Định dạng) liên quan, chứa một số lượng thông tin được biết bến đến hay được biết đến mà gọi là giá trị ” ( ) => Thôi hãy hiểu biến là nơi lưu trữ chứa đựng các thông tin Các thông tin này sẽ được chương trình máy tính sử dụng sau này Hãy tưởng tượng bạn đang xây dựng một kệ sách bằng gỗ Bạn cần ván gỗ, đinh, và những dụng cụ khác để.
Trang 1Biến và kiểu dữ liệu trong Dart
1. Biến là gì ?
Theo Wikipedia: “ Trong lập trình máy tính, một biến(variable) là một vị trí lưu trữ gắn
liền với một tên tượng trưng(Định dạng) liên quan, chứa một số lượng thông tin được biết bến đến hay được biết đến mà gọi là giá trị ” (-_-)
=> Thôi hãy hiểu biến là nơi lưu trữ chứa đựng các thông tin Các thông tin này sẽ được chương trình máy tính sử dụng sau này
Hãy tưởng tượng bạn đang xây dựng một kệ sách bằng gỗ Bạn cần ván gỗ, đinh, và những dụng cụ khác để hoàn thành kệ sách Để sắp xếp vật liệu tốt hơn, mày quyết định những thứ tương tự với nhau vào một hộp => Nó giúp mày dễ tìm vật liệu hơn khi cần thì mày sẽ tiết kiệm được nhiều thời gian hơn Mày sẽ có một hộp đựng ván gỗ, một hộp đinh và một hộp đựng dụng cụ :)
Tuy nhiên, đời đéo như mơ Ờ gỗ có nhiều loại, ngắn dài, gỗ xoan, gỗ vải, gỗ lim, đinh với dụng cụ cũng thế Ôi !! đm làm thế nào bây giờ ??
Thế thì lại chia nó ra vậy chia để riêng biệt hơn nhé Một hộp gỗ lim, một hộp gỗ xoan, một hộp gỗ vải, Bây giờ chúng ta có quá nhiều hộp cần gán nhãn để dễ phân biệt và tìm kiếm chúng Tới đây thì mày đã có một cách sắp xếp vật các vật liệu hiệu quả và thể
dễ dàng tìm kiếm khi cần rồi phải không ? => Đúng mẹ rồi còn gì :P
Trang 2=> Đấy nó sẽ như hình bên trên đấy
Tương tự như vậy, một biến giống một cái hộp nhỏ dùng để chứa dữ liệu Khi chúng ta cần gán một giá trị cho một biến => giống như mày gán nhãn cho cái hộp đựng gỗ ý Vậynên hành động khai báo biến chính là hành động gán nhãn cho cái hộp Khi chúng ta khaibáo biến chính là hành động gán nhãn vào hộp đó và cho nó một cái tên riêng để hay là một nhận dạng, xác định kiểu dữ liệu nó có thể chứa và thiết lập giá trị ban đầu của nó
1.1 Khai báo biến trong ngôn ngữ Dart
“Mỗi ngôn ngữ mà chúng ta nói thông thường đều có một bộ quy luật cách cấu trúc
câu Những quy tắc này được gọi là cú pháp ngôn ngữ Trong lập trình máy tính, những
cú pháp(syntax) cũng phục chung một mục đích như vậy.”
- Cú pháp khai báo biến của Dart
Chúng ta khai báo bằng cách đề cập đến kiểu dữ liệu mà biến của chúng sẽ chứa, chẳng hạn như số nguyên Sau đó đặt riêng của biến, tiếp theo là dấu “=” và giá trịban đầu Và dấu chấm phẩy nữa
“Một kiểu quy ước đặt tên trong Dart đó là viết hoa các chữ cái đầu của mỗi từ
ngoại trừ từ đâu tiên và các từ đều viết liên với nhau và không sử dụng dấu phân
cách.Ví dụ: vanTuyen”
=> Trong Dart khai báo biến sẽ:
Trang 3Trong đoạn code ở trên chúng ta vừa khai báo biến với tên:
myFirstDartVariable myFirstVariable có thể chứa kiểu dữ liệu int(integer - sốnguyên)
để có thể bỏ vào hộp trong vị dụ giá sách trên
- Kiểu dữ liệu có thể là những thứ mà chúng đã gặp hàng ngày như số, chữ cái, những
ký tự được phân loại dựa trên thuộc tính tương tự chúng
Trang 42.1 Những kiểu dữ liệu được tích hợp sẵn trong Dart
“Numbers,Strings,Booleans,Lists,Sets,Maps,Symbols”
Trong bài viết này chúng ta sẽ tập chung vào những kiểu dữ liệu sau: numbers,
strings, booleans, lists, sets và maps Còn runes và symbols sẽ không được đề cập
đến
Trước khi tìm hiểu chi tiết từ kiểu dữ liệu, có hai khái niệm mà mày cần phải làmquen trước
2.2 Tham trị (values) và tham chiếu(references)
Kiểu dữ liệu có thể chia thành hai loại:
1. Kiểu tham chiếu (Reference type)
2. Kiểu tham trị (Value type)
Những thông tin được cung cấp bởi kiểu tham trị thì chính những thông tin đó là giá trị luôn Còn đối với kiểu tham chiếu, những thông tin nó cung cấp là một tham chiếu đến một vài đối tượng(Cái này nói sau), tức là địa chỉ bộ nhớ nơi mà đối tượng
đó được lưu trữ ~~ (Khó hiểu vl)
Tưởng tượng mày có một mẩu giấy Mày muốn mẩu giấy của mày chứa một vài thông tin, như là tên của mày => Mày viết tiên của mày lên mẩu giấy, do đó giá trị của mẩu giấy chính là thông tin mà nó đang có Đấy kiểu tham trị cũng thế :)
Lại tưởng tượng tiếp, nếu mày muốn mẩu giấy đó chứa nhà của mày thì sao ? Vô
lý vl nhỉ ? Do đó, mày sẽ viết địa chỉ nhà của mày lên tờ giấy => tờ giấy là một tham chiếu đến đến thông tin được yêu cầu Đấy tham chiếu đấy :) Nếu ai muốn đi tới nhà mày thì cần phải đọc tờ giấy rồi mới tìm được đường tới nhà mày và đi đến
Tương tự như vậy, kiểu tham chiếu chứa vị trí địa chỉ của bộ nhớ của dữ liệu, trong khi kiểu tham trị thì chứa chính thông tin giá trị đó luôn
2.3 Kiểu dữ liệu là đối tượng
Trong hầu hết các ngôn ngữ, kiểu dữ liệu gốc là kiểu tham trị, nhưng trong Dart, tất
cả kiểu dữ liệu đều là đối tượng Điều này nghĩa là dữ liệu gốc trong ngôn ngữ Dart là
Trang 5kiểu tham chiếu Do đó, chúng ta có thể nói rằng, trong ngôn ngữ Dart tất cả các biếnđều chứa tham chiếu và đang tham chiếu đến đến một đối tượng.
2.3 Giá trị mặc định
Các biến chứa được giá trị đều có một giá trị ban đầu của null Ngay cả các biến với kiểu số đều là null ban đầu Bởi vì số(numbers) - giống như hầu hết các thứ kháctrong ngôn ngữ Dart - đều là đối tượng null đơn giản có nghĩa là một biến không tham chiếu đến một đối tượng, nó cũng không tham chiếu đến bất kỳ thứ gì khác
3. Khai báo literal
Chúng ta sẽ sử dụng từ “Khai báo literal” trong những bài sau Khai báo literal là việc khai báo trực tiếp các giá trị cố định khi chúng xuất hiện trong source code
Ví dụ: việc khai báo “Hello World”,5 và ‘A’ đều là khai báo literal
Classes
1. Class là những bản vẽ thiết kế
Trang 6Bản vẽ thiết kế là một hướng dẫn nó sẽ chỉ dẫn chúng ta tạo ra một cái gì đó Trong thực tế, các bản vẽ thiết kế thường là kế hoạch xây dựng các tòa nhà Bạn có thể tạo ra nhiều tòa nhà bằng cách sử dụng một bản thiết kế Với mỗi toàn nhà là duy nhất nhưng lại có kiến trúc cơ bản giống nhau
Ví dụ, một bản thiết kế có thể chỉ định số phòng mà một ngôi nhà nên có Mỗi ngôi nhà được xây dựng chung một bản thiết kế sẽ có số phòng giống nhau, nhưng nội thất, màu sơn, trang trí bên trong khác nhau Khiến chúng trở nên đa dạng nhưng vẫn giữ được nét liên quan thông qua bản thiết kế
Classes có thể được coi như là một bản vẽ thiết kế vậy Nó giúp chúng ta tạo nên một object(đốitượng) Một object là một thứ được dùng trong chương trình Tương tự như một ngôi nhà là mộtinstance của một bản vẽ thiết kế ở trên Bản vẽ chỉ là những tờ giấy còn ngôi nhà mới chính là đại diện vật lý của bản vẽ và có thể dùng để ở được
Bản thiết kế sẽ chỉ định các thuộc tính mà đối tượng sẽ có và cũng sẽ chỉnh định các hoạt động/ phương thức mà đối tượng có thể sử dụng Các thuộc tính trong Dart được gọi là các biến instance vì chúng là các biến được khởi tạo khi một đối tượng được tạo ra, tức là một instance của một lớp
Bạn sẽ dễ hiểu thông qua ví dụ sau đây!
Chúng ta sẽ tạo ra lớp (class) của con người nhé
Trang 7Mỗi người đều có một cái tên, giới tính và tuổi đó được gọi là một thuộc tính hay biến Và con người cũng thực hiện những hoạt động như đi bộ và nói chuyện, đó được gọi là phương thức.Class của con người sẽ bao gồm những phương thức và thuộc tính đó Để tạo instance thì chúng
ta cần thuộc tính và phương thức riêng biệt cho từng người Ví dụ: Tên: Sarah, tuổi: 25, giới tính: nữ có thể thực hiện những hoạt động như đi lại, nói chuyện,
2. Classes tích hợp sẵn và classes do người dùng tự định nghĩa
Classes trong Scala được định nghĩa thành 2 loại: các classes tích hợp sẵn và classes do người dùng tự định nghĩa
Bạn còn nhớ khi chúng ta thảo luận về list? Tất cả các phương thức mà chúng ta đã thảo luận thực sự là phần của class List tích hợp sẵn của ngôn ngữ Dart.
Khi chúng ta định nghĩa một danh sách thực ra chúng ta đang tạo một instance, tức là đối tượng,
của lớp List.
Mọi đối tượng là một instance của một classes và tất cả các class đề đi xuongs từ class cao nhất
trong hệ thống phân cấp class, class Object.
3. Tạo một Class trong Dart
Trang 8Từ khóa class sẽ được sử dụng định nghĩa một class trong ngôn ngữ Dart Sau từ khoán là một
phân dạng, một cái tên do bạn tự chọn Nội dung của class sẽ nằm bên trong dấu ngoặc
Trang 9Và chúng ta đã tạo được class đầu tiên với 3 biến instance và hai phương thức.
4. Đối tượng của một class
Sau khi một class được định nghĩa, bạn có thể tạo một đối tượng bằng cách sử dụng từ khóa new theo sao là nhận dạng của class
Chúng ta tạo ra các đối tượng vì muốn làm việc với chúng theo một cách nào đó Vì lý do này, chúng ta gán cho đối tượng một biến
Hãy khởi tạo lớp Person nhé!
Trang 104.1 Sử dụng class member
Bây giờ chúng ta đã có đối tượng firstPerson Tiếp theo chúng ta sẽ tìm hiểu cách sử dụng
các biến và phương thức instance Trong ngôn ngữ Dart, hãy sử dụng ( ) để tham chiếu đến một biến hoặc phương thức instance
Nếu bạn khởi tạo biến instance ở nơi nó được khai báo, giá trị sẽ được đặt khi instance
được tạo Vì vậy, ngay sau khi firstPerson được tạo, giá trị của age đã được đặt bằng 0 Hãy đặt giá trị của name và gender bằng toán tử dấu chấm trong khi chỉ định lại age một
giá trị mới
Trang 12Output:
Sarah is walking
Sarah is talking
walking() được gọi trên đối tượng firstPerson và in cùng biến name Vì phương thức được
gọi trên một đối tượng nên nó xác định xem biến được sử dụng có phải là một trong các
biến instance của đối tượng firstPerson, Phương thức sẽ in ra giá trị của nó
Trong đoạn code trên, firstPerson.walking() lấy giá trị của Sarah và in ra Sarah is
walking firstPerson.talking() cũng thực hiện tương tự và in ra Sarah is talking
4.2 Nhiều đối tượng trên cùng một class
Vì các class cung cấp code có thể sử dụng lại, nên có nghĩa là chúng ta có thể tạo nhiều đối
tượng bằng cách sử dụng cùng một class Cùng với firstPerson, tạo thêm các đối tượng của class Person.
Trang 14Mặc dù có nhiều biến name, nhưng tất cả chúng đều được tham chiếu bởi đối tượng khác
nhau, do đó, việc sửa đổi một biến sẽ không không sửa đổi các biến khác.Đây là lý do tại sao các thuộc tính được gọi là các biến instance, bởi vì mỗi đối tượng có một tập hợp các biến đó riêng mình
5. Constructors
Trong ngôn ngữ Dart, constructor là những hàm đặc biệt của một class có nhiệm vụ khởi tạo
các biến instance của class đó
Một constructor phải có tên cùng với tên class mà nó đang được khai báo và vì nó là một hàm nên nó có thể được tham số hóa
Tuy nhiên, không giống như các hàm thông thường, các constructor không có giá trị trả về, do
Trang 15Dạng phổ biến nhất của một constructor đó chính là generative constructor, tạo ra một instance mới của một class.
Output:
Sarah
Female
25
Như đã thảo luận ở trên, chúng ta có thể tạo nhiều instance của một class duy nhất Từ khóa
this đề cập đến instance hiện tại.
Trên dòng 8(this.name = nameC;), chúng ta gán giá trị nameC cho biến instance name của
instance hiện tại
Trang 16Ở dòng 18, chúng ta đang tạo một instance của class Person bằng cách sử dụng generative
constructor Bây giờ thay vì gán riêng từng giá trị cho các biến instance, tất cả những gì chúng ta phải làm là chuyển chúng cho constructor và nó sẽ
5.2 Named Constructor
Chúng ta có thể tạo nhiều constructor trong Dart dựa trên các tình huống khác nhau Trong những tình huống khác nhau Trong những trường hợp như vậy, tốt hơn hết là đặt tên cho các constructor để rõ ràng hơn
Syntax như sau:
Ví dụ:
Trang 17instance bằng toán tử dấu chấm (.) không ? Mỗi biến instance có một setters và một getter
ngầm mà chúng ta sử dụng cho đến bây giờ
6.1 Getter
Trang 18Getter là các hàm được sử dụng để truy xuất các giá trị thuộc tính của một đối tượng và
được định nghĩa bằng các sử dụng từ khóa get.
Syntax như sau:
Ví dụ:
Output: Sarah
Trên dòng String get personName => name; Chúng ta đang tạo một hàm getter trả về giá
trị name của phiên bản hiện tại
Trang 19Trên dòng print(firstPerson.personName);, chúng ta đang gọi hàm getter và output sẽ hiển thị Sarah.
6.2 Setters
Setters là các hàm được sử dụng để viết các giá trị thuộc tính của một đối tượng và được
định nghĩa bằng cách sử dụng từ khóa set
Syntax như sau:
Ví dụ:
Trang 20Output:
Age cannot be negative
null
Từ dòng 9 đến dòng 15, chúng ta đang tạo một hàm setter để đặt giá trị cho age Setter có
một điều kiện đảm bảo rằng người dùng không nhập đội tuổi âm
Ở dòng firstPerson.personAge = -5;, chúng ta đang đặt giá trị tuổi của firstPerson bằng cách sử dụng hàm setter personAge.
Trang 21Hãy xem ví dụ phức tạp hơn
Class Figure có 4 thuộc tính là left,top,with và height Chúng ta sẽ tạo hai hàm getter tính toán giá trị của hai thuộc tính mới, right và bottom.
Chúng ta sẽ tạo một hàm setter cho right Các thuộc tính right và left phụ thuộc lẫn nhau
Có nghĩa là dựa trên giá trị được đặt cho right, giá trị của bên left cần được sửa đổi Điều
này đang được xử lý bởi hàm setter
Tương tự như vậy, bottom và height phụ thuộc lẫn nhau Do đó, setter cho bottom sửa đổi giá trị height theo giá trị của bottom
Output:
3
23
Trang 22Trên dòng 15, giá trị của left là 3 Tuy nhiên, khi chúng ta gọi hàm setter right trên dòng
fig.right = 12;, giá trị của left được sửa đổi thành -8 và được hiển thị trên dòng
“Mỗi class là một subclass của superclass object Nó nằm ở đầu của hệ thống phân cấp lớp
và không có superclass và không có superclass của chính nó ”
Bạn có thể sẽ đặt ra câu hỏi là khi nào chúng ta sử dụng inheritance? Câu trả lời là bất cứ khi nào chúng ta bắt gặp mối quan hệ “IS A” giữa các đối tượng thì chúng ta có thể sử dụng inheritance
Trong hình minh họa trên, chúng ta có thể thấy các đối tượng có mối quan hệ “IS A” giữa chúng:
Trang 23Shape Circle
Programing Language Dart
8. Extending class
Trong ngôn ngữ Dart, chúng ta sử dụng extends để tạo ra một subclass
Hãy xem một ví dụ về máy bán hàng tự động Trong máy bán đồ ăn tự đông, chúng ta có một sốsản phẩm như beverage, chocolate, cookie, Điều đáng chú ý ở đây là chúng ta luôn thực hiện một quan hệ inheritance giữa các lớp khi chúng ta có thuộc tính chung.Ví dụ, trong trường hợp product, tất cả các product trong máy bán hàng tự động đều có tên cả, giá cả, ngày hết hạn, v.v Ngoài ra, mối quan hệ IS A cũng có thể thể hiện giá trị
● A beverage is a product
● Chocolate is a product
● A cookie is a product
Vì vậy, từ thảo luận trên, chúng ta có thể kết luận rằng nếu có một SupperClass có tên là
product, chúng ta có thể lấy ra các subClass là Beverage,Chocolate,Cookie,v.v từ superclass
Ví dụ:
Trang 25Ở dòng class Beverage extends Product{, chúng ta đang tạo subclass, Beverage Để gán
ba tham số đầu tiên của constructor Beverage, chúng ta đang sử dụng constructor Product.
super được sử dụng bởi một subclass để tham chiếu đến superclass của nó
beverageDetails() đang sử dụng phương thức Product printDetails(), để in các giá trị của
các thuộc tính _name, _price và _expDate Nó tự hiển thị các thuộc tính của chính nó Trong hàm main(), Chúng ta đang tạo một instance của lớp Beverage
Bạn có thể nhận thấy rằng chúng ta đã khai báo tất cả các biến instance bắt đầu bằng dấu gạch dưới (_) Dấu gạch dưới đảm bảo rằng instance là riêng tư Điều này có nghĩa là một subclass không thể kế thừa biến instance cụ thể đó
Đây là lý do tại sao chúng ta không thế sử dụng biến _name trực tiếp trong class Beverage.
Collection của ngôn ngữ Dart
1. Ngôn ngữ Dart: Hàm và phương thức
1.1 Hàm (Functions)
Trong lập trình máy tính, khi ta nói đến một hàm hay một phương thức tức là ta đang nói đến mộtblock code có thể thực hiện một nhiệm vụ cụ thể Block code đó được đặt tên và hàm sẽ gọi bằngcachs sử dụng các tên bất cứ khi nào 1 tác vụ cần được thực hiện Điều này giúp đỡ mất công ngồiviết đi viết lại những dòng code giống nhau, bạn chỉ đơn giản chỉ cần gọi tên hàm đó lên thôi
1.2 Cách hàm hoạt động
Giống như các hàm toán học, các hàm lập trình sẽ lấy một input, được biết như là tham số để thựchiện một vài phép toán trên tham số đó rồi trả lại kết quả ra output
Nó gần giống như một bằng chuyền trong một nhà máy Các mặt hàng đi vào máy từ đầu này và đi
ra ở đầu kia của băng chuyên Chúng được sửa đổi hoàn toàn thông qua quá trình đó Ví máy khôngthay đổi trong suốt vòng đời của nó cho nên nó sẽ sửa đổi mọi mặt hàng đi vào theo cùng một cáchgiống nhau
Trang 261.3 Hàm trong ngôn ngữ Dart
Chúng ta có thể chia hàm trong ngôn ngữ Dart thành hai loại lớn hơn đó là:
● Những hàm được tính hợp sẵn trong Dart
● Những hàm người dùng tự định nghĩa
Hàm người dùng tự định nghĩa là những hàm bạn phải tự tạo ra Những bài viết sau sẽ nói rõ hơn
khái niệm này còn bây giờ bạn không cần quan tâm nó lắm
Hàm tích hợp sẵn trong ngôn ngữ Dart là những hàm được định trước bởi Dart và cũng là một
phần trong thư viện của nó Tất cả việc chúng ta cần làm là gọi tên chúng để sử dụng
Câu lệnh in mà chúng ta sử dụng đầu series đến giờ cũng được gọi là hàm tích hợp sẵn
Trong đoạn code ở trên, print là một phương thức thực hiện một nhiệm vụ cụ thể có thể đó là in.
printMe là một tham số để chúng ta chuyền qua phương thức “Hello World” là kết quả output.
Chúng ta đã sử dụng những hàm này trong suốt thời gian qua đó bạn
print là một phương thức và nó là một phương thức rất đơn giản, chỉ yêu cầu truyền cho nó một
tham số có thể thuộc bất kỳ kiểu nào Tuy nhiên, hầu hết các phương thức không đơn giản như vậy
nó yêu cầu bạn gọi trên một đối tượng Ví dụ, objectName.method(argument) có nghĩa là phương
Trang 27thức đang được gọi trên objectName và arguments là các tham số được truyền cho method Phương thức trên sẽ thực hiện một vài hành động trên dữ liệu được chứa trong objectName.
Hầu hết các phương thức cho phép bạn chỉ truyền một tham số của một kiểu dữ liệu cụ thể Hãy gọi
thử indexOf một phương thức tích hợp sẵn trong Dart để hiểu rõ hơn cách hoạt động của nó nhé
indexOf được gọi trên đối tượng là một chuỗi và bạn sẽ truyền cho nó một tham số kiểu String Nó
được sử dụng để tính vị trí bắt đầu của một chuỗi con nằm bên trong chuỗi cha được chỉ định
“index là vị trí của đối tượng Trong ngôn ngữ Dart thì nó luôn bắt đầu với số 0”
Output: 2
Trong đoạn code trên, s1 chính là đối tượng Chúng ta sẽ gọi phương thức indexOf trên đối tượng
s1 ll là tham số mà chúng ta truyền qua Output hiển thị là 2 bời vì vị trí bắt đầu của chuỗi con ll là
thứ 2 trong chuỗi cha là “Hello World”
2. Giới thiệu và Collections trong ngôn ngữ Dart
Cấu trúc dữ liệu là cách lưu trữ, tổ chức dữ liệu có thứ tự, có hệ thống để dữ liệu có thể được sử
dụng một cách hiệu quả
Không giống như hầu hết các ngôn ngữ lập trình, Dart không có một số sưu tập lớn các cấu trúc
dữ liệu tích hợp sẵn Thay vào đó, nó có ba bộ sưu tập tích hợp cốt lõi có thể sử dụng để tạo một
bộ sưu tập dựa trên nhu cầu của cá nhân Ba tập hợp đó là List,Set và Map.
Trang 28Như được thảo luận ở trên, List,Set và Map là tất cả các kiểu trong ngôn ngữ Dart Một biến có
thể có thuộc một trong ba kiểu trên cùng với các kiểu gốc mà chúng ta đã thảo luận ở các bài trước Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu chi tiết hơn về Collection
3. List: The Dart Array
Arrays là một trong những kiến trúc dữ liệu phổ biến và quan trọng nhất của ngôn ngữ lập trình
Tuy nhiên trong ngôn ngữ Dart thì không có :) Array và thay vào đó là List List sẽ có những lợi
thế cũng có những hạn chế riêng so với Array
List là một tập hợp có thứ tự của các đối tượng Điều này có nghĩa là mỗi phần tử trong list đều có một vị trí cố định.
3.1 Tạo ra một List
Có nhiều cách để tạo ra một list, hãy tìm hiểu những cách phổ biến nhất nhé
❖ Sử dụng Literals
Cách đơn giản nhất là sử dụng Literals cùng với dấu ngoặc vuông []
Syntax như sau:
Chúng ta bắt đầu với từ khóa var theo sau là một tên nhận dạng riêng (listName) Sau đó
Trang 29dùng dấu ngoặc vuông Bên trong dấu ngoặc vuông là những phần tử được phân tách
Syntax như sau:
Khi chúng ta tạo ra một danh sách bằng cách sử dụng syntax bên trên, chúng ta sẽ nhận đượcmột danh sách rỗng
Ví dụ:
Trang 303.2 Làm việc với List
Như đã thảo luận, List là một kiểu của đối tượng và nó có những phương thức cũng nhưthuộc tính cụ thể
Trang 31❖ Indexing
Vị trí của phần tử đầu tiên trong danh sách sẽ là 0
Bởi vì mỗi phần tử đều có một vị trí riêng của nó cho nên một danh sách có thể chứa nhiều phần tử trùng nhau Mặc dù trùng nhau nhưng chúng đều có ví trí khác nhau Ví
dụ như danh sách với 5 phần tử giống nhau bên dưới
Trang 32Output: carrot
Trong ví dụ bên trên chúng ta truy vấn phần tử thứ hai của danh sách
listOfVegetables, phần tử có vị trí index là 1.
❖ Tính độ dài của list
Độ dài của danh sách đơn giản chỉ là số phần tử trong danh sách đó Đê biết được độdài của danh sách, chúng ta có thể truy cập thuộc tính length và sử dụng toán tử đểtruy cập bất cứ thuộc tính nào mà ta muốn
Syntax như sau:
Ví dụ:
Trang 33Output: [potato,carrot,cucumber,cabbage]
❖ Thêm nhiều phần tử
Chúng ta có thể thêm nhiều một phần tử mới vào danh sách hiện tại bằng cách sử dụng
phương thức addAll Tương tự, điều kiện, duy nhất là phần tử thêm phải cùng kiểu với
các phần tử đã có trong danh sách
addAll cơ bản là gộp các phần tử của hai sách lại thành một
Syntax như sau:
Ví dụ:
Trang 34[potato, carrot, cucumber, cabbage, broccoli, zucchini][potato, carrot, cucumber, cabbage, broccoli, zucchini, okra, capsicum]
❖ Xóa một phần tử đơn
Để xóa một phần tử từ danh sách hiện tai, chúng ta có thể sử dụng phương thức
removeAt Phương thức removeAt có một tham số duy nhất đó chính là phần tử bạn
muốn xóa khỏi danh sách Kiểu tham số đó là int.
Syntax sẽ như sau:
Ví dụ:
Trang 35Output:
[carrot, cucumber, cabbage, broccoli, zucchini]
[carrot, cucumber, broccoli, zucchini]
Nếu bạn muốn xóa một phần tử nhưng không biết số thứ tự của nó thì hãy sử dụng
phương thức indexOf mà chúng ta đã thảo luận ở trên.
Ví dụ:
Output: [cucumber, zucchini]
❖ Xóa tất cả các phần tử
Để xóa tất cả các phần tử khởi tạo danh sách, chúng ta chỉ cần gọi phương thức clear.
Một phương thức không có tham số khởi tạo nào cả
Ví dụ:
Trang 36Output: []
❖ Phương thức map()
Kiểu List có một phương thức được biết là map(), nó khác với collection Map.
map() map tất cả các phần tử của list vào một biểu thức hoặc câu lệnh Ví dụ chúng ta
có thể có một danh sách các số nguyên và chúng ta muốn tính bình phương của mỗi số
nguyên trong danh sách map() của List được sử dụng để giải quyết những vấn đề như
vậy
Syntax như sau:
Iterator có thể là bất cứ cái tên nào Nó cơ bản là một kiểu biến lấy giá trị của từng
phần tử trong danh sách Iterator bắt đầu lấy phần tử đầu tiên trong danh sách và sau
đó sẽ áp dụng phần tử đó vào câu lệnh Tương tự như vây cho đến khi không còn phần
tử nào để lấy nữa
Trong ví dụ bên dưới, chúng ta có danh sách các loại rau và chúng ta sẽ in từ “I love vegetable” Trong đó từ “vegetables” sẽ được thay thế bằng từng phần tử trong list
Output: (I love carrot, I love cucumber, I love zucchini)
Lưu ý output trên chưa phải là một danh sách vì nó không chứa dấu ngoặc vuông
Trang 37Để chuyển đổi kết quả của map() thành một danh sách chúng ta có thể dùng
phương thức toList()
Hãy điều chỉnh đoạn code bên trên:
Output: [I love carrot, I love cucumber, I love zucchini]
4. Cấu trúc dữ liệu set
Trong ngôn ngữ Dart, một set là một tập hợp không theo thứ tự của các phần tử riêng biệt Điều
này có nghĩa là các phần tử đó sẽ không có một vị trí cụ thể ở trong Set Do đó, một set sẽ khôngthể tạo ra các bản sao của cùng một phần tử
Chúng ta bắt đầu với từ khóa var theo sau là một định danh riêng setName Sau đó là dấu
= và các phần tử nằm bên trong dấu ngoặc nhọn được phân tách bởi dấu ,
Ví dụ:
Trang 38Ở dòng var simpleSet = {1,2,3}; của đoạn code ở trên, chúng ta khai báo và gán một set
với 3 phần tử
Khi chúng ta sử dụng phương thức print để in thì output sẽ hiển thị một set hoàn chỉnh
với dấu ngoặc nhọn
Như chúng ta đã thảo luận trước đó, Set không có các phần tử trùng lặp Tuy nhiên, bạn
có thể chèn một bản sau vào lúc tạo một set không có lỗi nhưng in không ra đâu :)
Bạn cũng có thể tạo một set bằng cách sửu dụng một hàm dựng set(Set cóntructor).
Một hàm dựng set tạo ra một đối tượng sử dụng dấu ngoặc nhọn {}
Syntax như sau:
Trang 39Việc chỉ định dữ liệu khá là quan trọng nếu bạn khai báo một set trống Nếu chúng ta bỏ qua kiểu dữ liệu, chúng ta sẽ kết thúc bằng map Chúng ta sẽ thảo luận thêm map ở phần sau
4.2 Làm việc với Set
❖ Thêm một phần tử đơn vào một set
Chúng ta có thể thêm một phần phần tử đơn vào set hiện tại bằng cách sử dụng phương
thức add Điều kiện duy nhất là phần tử mà bạn muốn thêm phải cùng kiểu dữ liệu trong
set
Phương thức add khi được gọi trên set có một tham số là phần tử mà bạn muốn thêm vào
set Kiểu của tham số phụ thuộc vào set mà bạn dùng phương thức để gọi vào
Syntax như sau:
Trang 40Ví dụ:
Output: {apples, bananas, oranges}
Bây giờ, setOfFruits đã có thêm 3 phần tử
❖ Thêm nhiều phần tử vào set
Chúng ta có thể thêm nhiều phần tử vào set hiện tại bằng cách sử dụng phương thức
addAll Điều kiện để thêm phần tử vào vẫn phải cùng kiểu với những phần tử khác trong
set
Phương thức addAll khi được gọi trên set cũng có một tham số là phần tử mà bạn muốn
thêm vào set Kiểu tham số đó là Set<dataType>, kiểu dữ liệu sẽ phụ thuộc vào set màbạn sử dụng để gọi vào
=> addAll cơ bản là gộp các phần tử của 2 set vào thành 1
Syntax sẽ như sau:
Ví dụ:
Từ khóa » Toán Tử Dart
-
Các Toán Tử Trong Lập Trình Dart
-
Tự Học Ngôn Ngữ Dart: Toán Tử (Operator) - 200lab Education
-
Tìm Hiểu Về Ngôn Ngữ Dart - Phần V - Viblo
-
Toán Tử Chấm Chấm (..) Trong Dart - Openplanning
-
Các Phép Toán Trong Dart (Toán Tử Dart/Flutter) - O₂ Education
-
Toán Tử Trong Dart - Flutter DevKit - GitBook
-
0.3 Các Toán Tử Trong Dart/Flutter - YouTube
-
Các Loại Toán Tử Trong Dart - W3seo
-
Các Toán Tử Trong Dart (Operators In Dart) | DIVIN.DEV
-
0.3 Các Toán Tử Trong Dart/Flutter 2023 - Mcongnghe.Com
-
KIẾN THỨC CƠ BẢN VỀ DART(PHẦN 2)
-
Dart Archives - Fx Studio
-
Dart Core - My Notes
-
Giới Thiệu Ngôn Ngữ Lập Trình Dart
-
[Dart&Flutter][Bài4]Biến Và Kiểu Dữ Liệu Trong Dart (P.3) - PiraGo Blog
-
Dart Và Flutter, Tại Sao Không? - Gists · GitHub
-
Giới Thiệu Về Ngôn Ngữ Lập Trình Dart - W3seo Tìm Hiểu Về Dart
-
Cùng Học Flutter - Code4Func
-
Những điểm đánh Dấu Khi Tìm Hiểu Về Dart - Kipalog