Ngôn Ngữ Lập Trình Dart Cơ Bản - 123doc

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 1

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 để 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 3

Trong đ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 4

2.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 5

kiể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 6

Bả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 7

Mỗ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 8

Từ 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 9

Và 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 10

4.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 12

Output:

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 14

Mặ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 15

Dạ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 17

instance 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 18

Getter 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 19

Trê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 20

Output:

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 21

Hã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 22

Trê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 23

Shape 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 26

1.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 27

thứ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 28

Như đượ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 29

dù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 30

3.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 32

Output: 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 33

Output: [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 35

Output:

[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 36

Output: []

❖ 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 39

Việ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 40

Ví 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