ডার্টে ডাবল ডট (।) ব্যবহারের তালিকা তৈরি করবেন?


141

কখনও কখনও আমি এটি দেখতে List list = [];

তারপর list..add(color)

1 ডট ( .) এবং 2 ডট ( ..) ব্যবহারের ক্ষেত্রে পার্থক্য কী?

উত্তর:


242

..ক্যাসকেড স্বরলিপি হিসাবে পরিচিত । আপনি যদি একই অবজেক্টে বেশ কয়েকটি পদ্ধতিতে কল করতে চান তবে এটি আপনাকে একই লক্ষ্যটির পুনরাবৃত্তি না করার অনুমতি দেয়।

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);

77

এটি ডার্টের ক্যাসকেড অপারেটর

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 ব্যবহার করতে সক্ষম হতে।

.. এটি সমস্ত শ্রেণীর জন্য বক্সের বাইরে সরবরাহ করে।


রেফারেন্স .. (in former example) refers to new List(), আপনি কি বোঝাতে চাইছেন যে আমরা আবার নতুন তৈরি Listকরছি যখন আমরা ..আমার মতে কোনটি ব্যবহার করি না। আমি আপনার কথা newশুনে বিভ্রান্ত হয়ে পড়েছি , এটি কি সত্যিই নতুন বা আপনি newএখানে কীওয়ার্ড নিয়ে কথা বলছেন ।
কক্সঅনরোড

প্রথম newএখন alচ্ছিক। ..প্রত্যাবর্তিত তালিকাকে বোঝায় এবং এর উপরে new List<int>()একাধিক পদ্ধতি কল করতে দেয় যেমন add(0) addAll(...)পুনরাবৃত্তি না করে l1.এবং এটি তৈরি করা তালিকা উদাহরণ যা নির্ধারিত হয় l1, শৃঙ্খলে ( ) এর শেষ পদ্ধতির রিটার্ন মান নয়addAll(...) । এটা কি তোমার প্রশ্নের উত্তর?
গন্টার জ্যাচবাউর

1
কাফনের কাপড়! আমি জানি newডার্ট ২.০ দিয়ে beginningচ্ছিক শুরু, আমি কেবল newউপরের প্রসঙ্গে বিভ্রান্ত হয়ে পড়েছিলাম এবং আপনার ব্যাখ্যার জন্য ধন্যবাদ thanks
13

1
..add(6)মত l1.add(6), .add(6)মত l1.add(5).add(6)add(5)আয় voidএবং আপনার কল করতে পারবেন না add()উপরvoid
গুন্টার Zöchbauer

2
এই দস্তাবেজটি অনুসরণ করুন: - dartlang.org/guides/language/language-tour# ক্যাসকেড- নোটেশন- কড়া কথায় ক্যাসকেডের জন্য "ডাবল ডট" স্বরলিপি অপারেটর নয়। এটি ডার্ট সিনট্যাক্সের মাত্র একটি অংশ।
মিঃ স্পেশাল

17

ক্যাসকেড (..) আপনাকে একই অবজেক্টে ক্রিয়াকলাপ তৈরি করার অনুমতি দেয়। বিশদ জন্য ডক পড়ুন

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!'));

1
এই উদাহরণের জন্য ধন্যবাদ! কোন ধারণা কেন ..onClickঅনুবাদ করে না button.classes.onClick?
বুকে ভার্সটিঘ

1

..ডার্টে ক্যাসকেডিং অপারেটর হিসাবে পরিচিত ।

এটি আপনাকে একাধিক উপসর্গ ক্রিয়াকলাপ ব্যবহার করতে দেয়:

উদাহরণ:

banerad..load()..show().

List coursename;
coursename..add("java")..add("flutter" )..add("dart");

এখানে আরও একটি উদাহরণ

এখানে আরও একটি উদাহরণ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.