Dart / Lists /

Dart / Lists /

/ Жагсаалт /

list бол нэг төрлийн олон өгөгдлийг нэг дор төвлөрүүлэн дараалалд оруулан хадгалдаг collection төрлийн object юм.

Дараах зургийг ажиглавал 6 элемент бүхий жагсаалт харагдаж байна. Эдгээр элемент бүр өөрийн гэсэн дугаартай байна. Энэ дугаар нь тухайн элементийг жагсаалтын хаана байршиж байгааг заадаг дугаар гэж ойлгож болно. index гэж нэрлэнэ.

index

index дугаар ямагт 0-ээс эхэлдэгийг анхаарах хэрэгтэй.

List-ийн үндсэн үйлдлүүд / Basic List Operations /

list үүсгэх:

Дараах байдлаар шинээр list үүсгэж болно:


                        var dessert = ['cookies', 'cupcakes', 'donuts', 'pie'];
                            

Ингэхдээ автоматаар index-ийг дотроо үүсгээсэн байдаг.

Мөн хоосон list үүсгэх боломжтой байдаг. Харин ингэхдээ төрөлийг List гэж зааж өгөх хэрэгтэй. List, List гэх мэт жагсаалтад ямар төрлийн элементүүд байхаас хамааруулан сонгоод явч болно.


                            List < String > snacks = [];
                                

Дээрх жишээнд дурдсан List нь class-ын нэр юм. Харин <> нь тухайн жагсаалтаад оролцох элементүүдийн төрлийг зааж өгдөг хэсэг юм. Үүнийг generic types гэж нэрлэнэ.

Хоосон list үүсгэх бас нэг арга бол:


                        var snacks = < String >[];
                                

list хэвлэх:

list-ийг энгийн хувьсагч хэвлэдэгтэй адил аргаар хэвлэдэг:


desserts = ['cookies', 'cupcakes', 'donuts', 'pie'];
print(desserts);
                                            

Элемент сонгох:

list-ийн аль нэг элементийг сонгохдоо index дугаарыг ашиглана.


desserts = ['cookies', 'cupcakes', 'donuts', 'pie'];
final secondElement = desserts[1];
print(secondElement);
                    

Ингэхдээ индеĸсийн дугаарлалт 0-ээс эхэлдэгийг мартаж болохгүй.

Хэрэв танд list-ийн аль нэг элементийн индеĸс хэрэг болсон бол дараах аргыг хэрэглэнэ:


desserts = ['cookies', 'cupcakes', 'donuts', 'pie'];
final index = desserts.indexOf('pie');
final value = desserts[index];
print('The value at index $index is $value.');
                    

Ажиллуулж үзвэл pie утгатай элементийн индеĸс 3 байгааг харж болно.

Элементэд утга оногдуулах, солих:


desserts = ['cookies', 'cupcakes', 'donuts', 'pie'];
desserts[1] = 'cake';
print(desserts);
                    

Ард нь элемент нэмэх:

list дээр шинээр элемент нэмэхдээ add метод ашигладаг.


desserts.add('brownies');
print(desserts);
                    

Шинэ элемент хамгийн ард нь нэмэгддэг.

Дунд нь элемент нэмэх:

Харин дунд нь нэмэхээр бол insert ашиглана.


                        desserts.insert(1, 'ice cream');
                        print(desserts);
                    

Элемент устгах:

Элементийг утгаар нь хайж устгахдаа.


dessert.remove('cake');
print(desserts);
                    

Элементийг индеĸсээр нь хайж устгахдаа:


dessert.removeAt(0);
print(desserts);
                    

Эрэмбэлэх:

Жагсаалтын гишүүдийг эрэмблэхдээ sort метод ашиглана..


                        final integers = [32, 73, 2, 343, 7, 10, 1];
                        integers.sort();
                        print(integers);
                    

Эрэмбэлсний үр дүнд та жагсаалтын хамгийн их эсвэл байга утгатай гишүүнийг олох боломжтой болно:


final smallest = integers[0];
print(smallest);
final lastIndex = integers.length - 1;
final largest = integers[lastIndex];
print(largest);
                        

sort методыг теĸст төрөл дээр ч ашиглаж болно:


final animals = ['zebra', 'dog', 'alligator', 'cat'];
animals.sort();
print(animals);
                    

sort метод нь теĸст төрлийн элементүүдийг цагаан толгойн дарааллаар эрэмбэлж, тоонуудыг багаас ихрүү эрэмбэлдэг.

Өөрчлөгддөг болон өөрчлөгддөггүй list / Mutable and Immutable list /

list зарлахдаа var түлхүүр үг ашиглан үүсгэсэн бол дараах үйлдлийг хийх боломжтой:


                        var desserts = ['cookies', 'cupcakes', 'donuts', 'pie'];
                        desserts = [];
                        desserts = ['cookies', 'cupcakes', 'donuts', 'pie'];
                    

Харин final түлхүүр үг ашигласан бол боломжгүй. Гэхдээ remove, add методууд бүгд ажиллана:


                        final desserts = ['cookies', 'cupcakes', 'donuts', 'pie'];
                        desserts = []; // ажиллахгүй
                        desserts = ['cookies', 'cupcakes', 'donuts', 'pie']; // ажиллахгүй
                        desserts.remove('cookies'); // OK
                        desserts.remove('cupcakes'); // OK
                        desserts.add('ice cream'); // OK
                    

Огт өөрчлөгдөх боломжгүй list / Deeply Immutable Lists /

const хувьсагч

const түлхүүр үг ашиглаж үүсгэсэн жагсаалтын гишүүдийг ч өөрчлөх боломжгүй, шинэ утга ч оногдуулж болдоггүй. Доорх ĸодыг ажиллуулбал ĸомпьютер гацах аюултай.


                        const integers = [32, 73, 2, 343, 7, 10, 1];
                        integers[3] = 16; // ингэж болохгүй
                     

Const List Literals:

Жагсаалт бүхий хувьсагчийг const болгох хэрэггүй ч жагсаалтын дотор агуулагдаж байгаа элементүүдийг const болгож болдог.


                            final desserts = const ['cookies', 'cupcakes', 'donuts', 'pie'];
                         

class үүсгэхдээ бид өмнө final түлхүүр үг ашиглаж байсан:


                        class Desserts {
                            Desserts([this.desserts = const ['cookies']]);
                            final List< String > desserts;
                            }
                     

dessert-д шинэ гишүүн нэмж, хасч болох ч анхны гишүүнийг const гэж зарлан огт өөрчилж болохгүй болгосон байна.

List properties:

List-ийн өөрт нь суугдсан методуудыг properties гэх ба дараах жишээндээр авч үзье:


                            const drinks = ['water', 'milk', 'juice', 'soda'];
                         

эхний болон сүүлийн элементийг сонгох / Accessing First and Last Elements

Эхний болон сүүлийн гишүүнийг сонгохдоо first, last метод ашиглаж болно:


drinks.first // water
drinks.last // soda
                     

Дараах аргаар бас эхний болон сүүлийн гишүүнийг олж байна:


drinks[0] // water
drinks[drinks.length - 1] // soda
                    

Жагсаалт хоосон эсэхийг шалгах / Checking If a List Contains Any Elements


drinks.isEmpty // false
drinks.isNotEmpty // true
                    

Дараах аргаар бас хоосон үгүйг шалгаж болж байна:


drinks.length == 0 // false
drinks.length > 0 // true
                    

Элемент бүрийг loop-ээр сонгох / Looping Over the Elements of a List /

for loop:


                        const desserts = ['cookies', 'cupcakes', 'donuts', 'pie'];
                        for ( int i = 0; i < desserts.length; i++) {
                        final item = dessert[i];
                        print('I like $item.');
                        }
                    

"i < desserts.length" нөхцлийг сайн анзаараарай.

for-in loop:

loop хийх хамгийн амар арга бол fot-in юм.


                        for (final item in desserts) {
                            print('I also like $item!');
                            }
                    

Code as UI

Flutter framework нь өвөрмөц шинж чанараар нь Dart-ыг сонгож анх хийгдсэн байдаг. Эргээд Flutter нь Дартын хөгжилд мөн нөлөөлсөн. Үүнийг дараах нэмэлтүүдээс харж болно.

  • spread Operator
  • collection if
  • collection for

Spread Operator ( ... )

Жагсаалтуудыг хооронд нь нэмэх хэд хэдэн арга бий. Дараах жагсаалтууд байлаа гэж бодъе.


final desserts = ['donuts'];
const pastries = ['cookies', 'croissants'];
const candy = ['Junior Mints', 'Twizzlers', 'M&Ms'];
                    

Эхнийх дээр сүүлийн 2-ыг нэмэх энгийн арга:


desserts.addAll(pastries);
desserts.addAll(candy);
print(desserts);
                    

Харин spread operator ашиглавал:


                        final desserts = ['donuts', ...pastries, ...candy];
                    

Collection if

list-ийн аль нэг гишүүнийг нөхцөлтэйгээр байлгаж эсвэл алга болгож болно:


const peanutAllergy = true;
const sensitiveCandy = [
'Junior Mints',
'Twizzlers',
if (!peanutAllergy) 'Reese',
];
print(sensitiveCandy);
                    

Collection for

list-ийн гишүүдийг давтамж ашиглан үүсгэж болно:


onst deserts = ['gobi', 'sahara', 'arctic'];
const bigDeserts = [
'ARABAN',
'Twizzlers',
for(var desert in deserts) desert.toUpperCase(),
];
print(bigDeserts);
                    

list дээр null ашиглах / Handling Nullable Lists /

Тухайн жагсаалтыг өөрийг нь null болгох:


List< int >? nullableList = [2, 4, 3, 7];
nullableList = null;
                    

Тухайн жагсаалтыг null утгатай гишүүн агуулах боломжтой болгох:


                        List< int? > nullableElements = [2, 4, null, 3, 7];
                        

Тухайн жагсаалтыг өөрийг нь null болгох мөн null утгатай гишүүн агуулах боломжтой болгох:


List< int? >? nullableListAndElements = [2, 4, null, 3, 7];
nullableListAndElements = null;