উত্তর:
ডার্টের দুটি ধরণের alচ্ছিক প্যারামিটার রয়েছে: নামযুক্ত এবং অবস্থানগত । আমি পার্থক্যগুলি আলোচনা করার আগে প্রথমে মিলগুলি নিয়ে আলোচনা করবো discuss
ডার্ট এর ঐচ্ছিক প্যারামিটার হয় ঐচ্ছিক যে আহ্বানকারী যখন ফাংশন কলিং পরামিতি জন্য একটি মান নির্দিষ্ট করার প্রয়োজন হয় না হবে।
Requiredচ্ছিক পরামিতিগুলি কোনও প্রয়োজনীয় প্যারামিটারের পরেই ঘোষণা করা যেতে পারে।
Alচ্ছিক পরামিতিগুলির একটি ডিফল্ট মান থাকতে পারে, যা কলার যখন কোনও মান নির্দিষ্ট করে না তখন ব্যবহৃত হয়।
অবস্থানগত optionচ্ছিক পরামিতি
একটি প্যারামিটার মোড়ানো [ ]
একটি অবস্থানগত alচ্ছিক পরামিতি। এখানে একটি উদাহরণ:
getHttpUrl(String server, String path, [int port=80]) {
// ...
}
উপরের port
কোডটিতে optionচ্ছিক এবং এর ডিফল্ট মান রয়েছে 80
।
getHttpUrl
তৃতীয় প্যারামিটারের সাথে বা ছাড়াই আপনি কল করতে পারেন ।
getHttpUrl('example.com', '/index.html', 8080); // port == 8080
getHttpUrl('example.com', '/index.html'); // port == 80
আপনি কোনও ফাংশনের জন্য একাধিক অবস্থানগত পরামিতি নির্দিষ্ট করতে পারেন:
getHttpUrl(String server, String path, [int port=80, int numRetries=3]) {
// ...
}
Specifyচ্ছিক পরামিতিগুলি অবস্থানগত যে আপনি port
উল্লেখ করতে চাইলে আপনি বাদ দিতে পারবেন না numRetries
।
getHttpUrl('example.com', '/index.html');
getHttpUrl('example.com', '/index.html', 8080);
getHttpUrl('example.com', '/index.html', 8080, 5);
অবশ্যই, আপনি যদি না জানেন যে 8080 এবং 5 কী হয়, তবে স্পষ্টতই যাদুর সংখ্যাগুলি কী তা বলা শক্ত। আপনি আরও পঠনযোগ্য এপিআই তৈরি করতে নামযুক্ত optionচ্ছিক পরামিতি ব্যবহার করতে পারেন ।
নামযুক্ত optionচ্ছিক পরামিতি
মোড়ানো একটি প্যারামিটার { }
হ'ল নামযুক্ত namedচ্ছিক প্যারামিটার। এখানে একটি উদাহরণ:
getHttpUrl(String server, String path, {int port = 80}) {
// ...
}
getHttpUrl
তৃতীয় প্যারামিটারের সাথে বা ছাড়াই আপনি কল করতে পারেন । ফাংশনটি কল করার সময় আপনাকে অবশ্যই প্যারামিটারের নামটি ব্যবহার করতে হবে ।
getHttpUrl('example.com', '/index.html', port: 8080); // port == 8080
getHttpUrl('example.com', '/index.html'); // port == 80
আপনি কোনও ফাংশনের জন্য একাধিক নামযুক্ত পরামিতি নির্দিষ্ট করতে পারেন:
getHttpUrl(String server, String path, {int port = 80, int numRetries = 3}) {
// ...
}
নামযুক্ত প্যারামিটারগুলি নাম অনুসারে রেফারেন্স করা হয়, সেগুলি তাদের ঘোষণার থেকে পৃথক ক্রমে ব্যবহার করা যেতে পারে।
getHttpUrl('example.com', '/index.html');
getHttpUrl('example.com', '/index.html', port: 8080);
getHttpUrl('example.com', '/index.html', port: 8080, numRetries: 5);
getHttpUrl('example.com', '/index.html', numRetries: 5, port: 8080);
getHttpUrl('example.com', '/index.html', numRetries: 5);
আমি বিশ্বাস করি নামযুক্ত প্যারামিটারগুলি সহজে বোঝার জন্য কল সাইটগুলি তৈরি করে, বিশেষত যখন বুলিয়ান পতাকা বা প্রাসঙ্গিক নম্বর থাকে when
Ckingচ্ছিক প্যারামিটার সরবরাহ করা হয়েছিল কিনা তা পরীক্ষা করা হচ্ছে
দুর্ভাগ্যক্রমে, আপনি কেসগুলির মধ্যে পার্থক্য করতে পারবেন না "একটি alচ্ছিক প্যারামিটার সরবরাহ করা হয়নি" এবং "একটি alচ্ছিক প্যারামিটার ডিফল্ট মান সহ সরবরাহ করা হয়েছিল"।
দ্রষ্টব্য: আপনি অবস্থানগত optionচ্ছিক পরামিতি বা নামযুক্ত alচ্ছিক পরামিতি ব্যবহার করতে পারেন , তবে একই ফাংশন বা পদ্ধতিতে উভয়ই নয় । নিম্নলিখিত অনুমোদিত নয়।
thisFunctionWontWork(String foo, [String positonal], {String named}) {
// will not work!
}
আমার বোঝার সাথে ডার্টে, পদ্ধতি প্যারামিটার দুটি ধরণের দেওয়া যেতে পারে।
>> প্রয়োজনীয় প্যারামিটার
প্রয়োজনীয় প্যারামিটার হ'ল একটি পুরাতন স্টাইলের প্যারামিটার যা আমরা সকলেই এর সাথে পরিচিত
উদাহরণ :
findVolume(int length, int breath, int height) {
print('length = $length, breath = $breath, height = $height');
}
findVolume(10,20,30);
আউটপুট:
length = 10, breath = 20, height = 30
>> ptionচ্ছিক অবস্থানগত পরামিতি
বর্গাকার বন্ধনী [] এর সাথে পরামিতি প্রকাশ করা হবে এবং স্কোয়ার বন্ধনী পরামিতিগুলি alচ্ছিক।
উদাহরণ:
findVolume(int length, int breath, [int height]) {
print('length = $length, breath = $breath, height = $height');
}
findVolume(10,20,30);//valid
findVolume(10,20);//also valid
আউটপুট:
length = 10, breath = 20, height = 30
length = 10, breath = 20, height = null // no value passed so height is null
>> Nameচ্ছিক নামযুক্ত প্যারামিটার
উদাহরণ:
findVolume(int length, int breath, {int height}) {
print('length = $length, breath = $breath, height = $height');
}
findVolume(10,20,height:30);//valid & we can see the parameter name is mentioned here.
findVolume(10,20);//also valid
আউটপুট:
length = 10, breath = 20, height = 30
length = 10, breath = 20, height = null
>> Defচ্ছিক ডিফল্ট প্যারামিটার
উদাহরণ:
findVolume(int length, int breath, {int height=10}) {
print('length = $length, breath = $breath, height = $height');
}
findVolume(10,20,height:30);//valid
findVolume(10,20);//valid
আউটপুট:
length = 10, breath = 20, height = 30
length = 10, breath = 20, height = 10 // default value 10 is taken
এই ভিডিও লিঙ্ক থেকে প্রদত্ত স্পষ্ট ব্যাখ্যাটির জন্য ধন্যবাদ, ভিডিও নির্মাতার কাছে ক্রেডিট।
ভিডিও লিঙ্ক: ptionচ্ছিক অবস্থানগত প্যারামিটার
"প্যারামনেম: মান" সিনট্যাক্স ব্যবহার করে যখন কোনও ফাংশনের প্যারামিটার নির্দিষ্ট করা থাকে, তখন এটি একটি নামযুক্ত প্যারামিটার হয়। এই জাতীয় পরামিতিগুলি [এবং] বন্ধনীগুলির মধ্যে বদ্ধ করে alচ্ছিক রেন্ডার করা যেতে পারে। নিম্নলিখিত হ্যালো ওয়ার্ল্ড প্রোগ্রামে এই ফাংশনটির একটি প্রাথমিক উত্সাহ প্রদর্শন করা যেতে পারে:
sayHello([String name = ' World!']) {
print('Hello, ${name}');
}
void main() {
sayHello('Govind');
}
ডক থেকে আমরা পেলাম যে উভয় positional
এবং named
পরামিতিগুলি alচ্ছিক , যার অর্থ তারা সকলেই অনুপস্থিত থাকতে পারে।
আমার মতে, named
পরামিতিগুলির চেয়ে বেশি কঠোর positional
। উদাহরণস্বরূপ, যদি আপনি এই জাতীয় পদ্ধতি ঘোষণা করেন:
String say({String from, String msg})
সর্বোপরি from
এবং msg
হয় named
যখন আপনি পদ্ধতি কল, পরামিতি say
আপনি ব্যবহার করা আবশ্যক say(from: "xx", msg: "xx")
। কীগুলি অনুপস্থিত থাকতে পারে না।
তবে আপনি যদি অবস্থানগত পরামিতি ব্যবহার করেন তবে আপনি মুক্ত।
Named
প্যারামিটারগুলিকে এরকম বলা হয় কারণ আপনি প্রকৃতপক্ষে নাম অনুসারে তাদের সনাক্ত করতে পারেন এবং অবস্থানের দ্বারা নয় (যদি আপনি দুটি নামযুক্ত প্যারামের অবস্থান স্যুইচ করেন তবে কিছু যায় আসে না)। উত্তর Savaranaraja থেকে উপরে দেখুন
অবস্থানগত পরামিতি:
এগুলি ডিফল্ট পরামিতিগুলির মতো। উদাহরণ স্বরূপ:
void add(int x, [int y = 3]);
এখানে y এর ডিফল্ট মান 3 হয়
নামযুক্ত পরামিতি:
এগুলি হল প্যারামিটারগুলি যা পাসওয়ার্ডটির পরে প্যারামিটারের নামটি পাস করে যে কোনও ক্রমে পাস করা যেতে পারে। উদাহরণ স্বরূপ:
void sum({int num1, int num2});
এই ফাংশনটিকে এভাবে বলা হয়:
sum(num1: 12, num2: 24);
নামযুক্ত পরামিতিগুলির ডিফল্ট মানও থাকতে পারে।