บางครั้งก็เห็นแบบนี้
List list = [];
แล้วก็ list..add(color)
การใช้ 1 dot ( .
) และ 2 dot ( ..
) ต่างกันอย่างไร
บางครั้งก็เห็นแบบนี้
List list = [];
แล้วก็ list..add(color)
การใช้ 1 dot ( .
) และ 2 dot ( ..
) ต่างกันอย่างไร
คำตอบ:
เป็นตัวดำเนินการเรียงซ้อนของ Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
ส่งผลl1
ให้เป็นรายการ[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
ส่งผลให้เกิดข้อผิดพลาดเนื่องจาก.add(0)
ส่งคืนvoid
..
(ในตัวอย่างก่อนหน้า) อ้างถึงnew List()
ในขณะที่.
(ในภายหลัง) หมายถึงค่าที่ส่งคืนของส่วนก่อนหน้าของนิพจน์
..
ได้รับการแนะนำเพื่อหลีกเลี่ยงความจำเป็นในการส่งคืนthis
ในทุกวิธีเช่นadd()
เพื่อให้สามารถใช้ API ได้อย่างคล่องแคล่ว
..
ให้สิ่งนี้นอกกรอบสำหรับทุกชั้นเรียน
new
เป็นทางเลือก ..
หมายถึงรายการที่ส่งกลับโดยnew List<int>()
และช่วยให้การเรียกวิธีการหลายคนมันเหมือนadd(0)
addAll(...)
ได้โดยไม่ต้องทำซ้ำl1.
และมันก็เป็นเช่นรายการที่สร้างขึ้นที่กำหนดให้l1
, ไม่ได้ค่าตอบแทนของวิธีการที่ผ่านมาในห่วงโซ่ ( addAll(...)
) สิ่งนี้ตอบคำถามของคุณหรือไม่?
new
เป็นทางเลือกที่เริ่มต้นด้วย Dart 2.0 ฉันเพิ่งสับสนกับnew
บริบทข้างต้นและขอบคุณสำหรับคำอธิบายของคุณ
..add(6)
เป็นเหมือนl1.add(6)
, เป็นเหมือน.add(6)
ผลตอบแทนและคุณไม่สามารถโทรในl1.add(5).add(6)
add(5)
void
add()
void
Cascades (.. ) ช่วยให้คุณสร้างลำดับของการดำเนินการบนวัตถุเดียวกันได้ อ่านเอกสารเพื่อดูรายละเอียด
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
ตัวอย่างก่อนหน้านี้เทียบเท่ากับ:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
ไม่แปลเป็นbutton.classes.onClick
?
..
เรียกว่าตัวดำเนินการเรียงซ้อนในโผ
ช่วยให้คุณสามารถใช้การดำเนินการในภายหลังมากกว่าหนึ่งครั้ง:
ตัวอย่าง:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
นี่คืออีกตัวอย่างหนึ่ง
.. (in former example) refers to new List()
คุณหมายความว่าเรากำลังสร้างใหม่อีกครั้งList
เมื่อเราใช้..
ในความคิดของฉัน NO ฉันสับสนกับnew
คำของคุณมันใหม่จริงๆหรือคุณกำลังพูดถึงnew
คีย์เวิร์ดที่นี่