Terkadang saya melihat ini
List list = [];
Kemudian list..add(color)
Apa perbedaan menggunakan 1 titik ( .
) dan 2 titik ( ..
)?
Terkadang saya melihat ini
List list = [];
Kemudian list..add(color)
Apa perbedaan menggunakan 1 titik ( .
) dan 2 titik ( ..
)?
Jawaban:
..
dikenal sebagai notasi kaskade . Ini memungkinkan Anda untuk tidak mengulangi target yang sama jika Anda ingin memanggil beberapa metode pada objek yang sama.
List list = [];
list.add(color1);
list.add(color2);
list.add(color3);
list.add(color4);
// with cascade
List list = [];
list
..add(color1)
..add(color2)
..add(color3)
..add(color4);
Ini operator kaskade Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
hasil l1
menjadi daftar[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
menghasilkan kesalahan, karena .add(0)
kembalivoid
..
(dalam contoh sebelumnya) merujuk ke new List()
, sementara .
(di kemudian) merujuk pada nilai pengembalian dari bagian sebelumnya dari ekspresi.
..
diperkenalkan untuk menghindari kebutuhan untuk kembali this
dalam semua jenis metode seperti add()
untuk dapat menggunakan API dengan lancar.
..
menyediakan ini di luar kotak untuk semua kelas.
new
sekarang opsional. ..
merujuk ke daftar yang dikembalikan oleh new List<int>()
dan memungkinkan untuk memanggil beberapa metode di atasnya seperti add(0)
addAll(...)
tanpa mengulangi l1.
dan itu adalah contoh daftar yang dibuat yang ditugaskan untuk l1
, bukan nilai pengembalian metode terakhir dalam rantai ( addAll(...)
). Apakah ini menjawab pertanyaan Anda?
new
adalah opsional dimulai dengan Dart 2.0, saya baru saja bingung dengan new
konteks di atas dan terima kasih atas penjelasan Anda.
..add(6)
seperti l1.add(6)
, .add(6)
seperti l1.add(5).add(6)
. add(5)
kembali void
dan Anda tidak dapat memanggil add()
padavoid
Cascades (..) memungkinkan Anda untuk membuat urutan operasi pada objek yang sama. baca dokumen untuk detailnya
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
Contoh sebelumnya setara dengan:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
tidak diterjemahkan button.classes.onClick
?
..
Dikenal sebagai operator cascading di panah.
Ini memungkinkan Anda untuk menggunakan lebih dari satu operasi selanjutnya:
Contoh:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Ini adalah contoh lain
.. (in former example) refers to new List()
, maksud Anda, kami membuat lagiList
saat kami menggunakan..
menurut saya TIDAK. Saya bingung dengannew
kata - kata Anda , apakah ini benar-benar BARU atau Anda berbicara tentangnew
kata kunci di sini.