আমার সীমিত বোঝাপড়া এমন:
1) আংশিক ফাংশন অ্যাপ্লিকেশন
আংশিক ফাংশন অ্যাপ্লিকেশন হ'ল একটি ফাংশন ফিরিয়ে দেওয়ার প্রক্রিয়া যা কম সংখ্যক তর্ক যুক্ত করে। যদি আপনি 3 টির মধ্যে 2 টি আর্গুমেন্ট সরবরাহ করেন তবে এটি এমন একটি ফাংশন ফিরিয়ে দেবে যা 3-2 = 1 টি আর্গুমেন্ট নেয়। যদি আপনি 3 টির মধ্যে 1 টি আর্গুমেন্ট সরবরাহ করেন তবে এটি এমন ফাংশন ফিরিয়ে দেবে যা 3-1 = 2 টি আর্গুমেন্ট নেয়। আপনি যদি চান, আপনি এমনকি আর্গুমেন্ট 3 আউট 3 আউট প্রয়োগ করতে পারেন এবং এটি একটি ফাংশন ফিরে যে কোন যুক্তি লাগে না।
সুতরাং নিম্নলিখিত ফাংশন দেওয়া:
f(x,y,z) = x + y + z;
1 থেকে x বাঁধাই করার সময় এবং উপরের ফাংশনে আংশিকভাবে প্রয়োগ করার সময় f(x,y,z)
আপনি পাবেন:
f(1,y,z) = f'(y,z);
কোথায়: f'(y,z) = 1 + y + z;
এখন আপনি যদি y তে 2 এবং z থেকে 3 বেঁধে রাখতেন এবং আংশিকভাবে প্রয়োগ f'(y,z)
করতে পারেন তবে আপনি পাবেন:
f'(2,3) = f''();
যেখানে: f''() = 1 + 2 + 3
;
এখন যেকোনো সময়ে, আপনি মূল্যায়ন করা চয়ন করতে পারেন f
, f'
অথবা f''
। সুতরাং আমি এটি করতে পারি:
print(f''()) // and it would return 6;
অথবা
print(f'(1,1)) // and it would return 3;
2) তরকারী
অন্যদিকে কারি হচ্ছে একটি ফাংশনকে একটি যুক্তি ফাংশনের নেস্টেড চেইনে বিভক্ত করার প্রক্রিয়া। আপনি কখনই 1 টির বেশি যুক্তি সরবরাহ করতে পারবেন না, এটি এক বা শূন্য।
সুতরাং একই ফাংশন দেওয়া:
f(x,y,z) = x + y + z;
আপনি যদি এটি তরকারি থেকে সজ্জিত করেন তবে আপনি 3 টি ফাংশনের একটি শৃঙ্খল পাবেন:
f'(x) -> f''(y) -> f'''(z)
কোথায়:
f'(x) = x + f''(y);
f''(y) = y + f'''(z);
f'''(z) = z;
এখন আপনি যদি f'(x)
সাথে কল করেন x = 1
:
f'(1) = 1 + f''(y);
আপনাকে একটি নতুন ফাংশন ফিরিয়ে দেওয়া হয়েছে:
g(y) = 1 + f''(y);
আপনি যদি সাথে কল g(y)
করেন y = 2
:
g(2) = 1 + 2 + f'''(z);
আপনাকে একটি নতুন ফাংশন ফিরিয়ে দেওয়া হয়েছে:
h(z) = 1 + 2 + f'''(z);
শেষ পর্যন্ত যদি আপনি এই সাথে কল h(z)
করেন z = 3
:
h(3) = 1 + 2 + 3;
আপনি ফিরে এসেছেন 6
।
3) বন্ধ
অবশেষে, ক্লোজার হ'ল ফাংশন এবং ডেটা একসাথে একক ইউনিট হিসাবে ক্যাপচার করার প্রক্রিয়া। একটি ফাংশন বন্ধ হতে পারে 0 থেকে অসীম সংখ্যক আর্গুমেন্ট নিতে পারে, তবে এটি এতে ডেটা পাস না করা সম্পর্কেও সচেতন।
আবার, একই ফাংশন দেওয়া:
f(x,y,z) = x + y + z;
পরিবর্তে আপনি একটি বন্ধ লিখতে পারেন:
f(x) = x + f'(y, z);
কোথায়:
f'(y,z) = x + y + z;
f'
বন্ধ আছে x
। এর অর্থ যা f'
এর ভিতরে থাকা x এর মান পড়তে পারে f
।
আপনি যদি f
সাথে কল করতে পারেন x = 1
:
f(1) = 1 + f'(y, z);
আপনি একটি বন্ধ পেতে চাই:
closureOfF(y, z) =
var x = 1;
f'(y, z);
এখন আপনি যদি closureOfF
সাথে ফোন করেন y = 2
এবং z = 3
:
closureOfF(2, 3) =
var x = 1;
x + 2 + 3;
যা ফিরে আসবে 6
উপসংহার
কারিঙ, আংশিক প্রয়োগ এবং সমাপনী কিছুটা একই রকম যে তারা কোনও ফাংশনকে আরও বেশি অংশে বিভক্ত করে।
কারিঙ একাধিক যুক্তির ফাংশনকে বিরল করে যা একক যুক্তির ফাংশনগুলি ফিরিয়ে দেয় একক যুক্তির নেস্ট ফাংশনগুলিতে। এক বা কম যুক্তির ফাংশনটি কারি করার কোনও অর্থ নেই, যেহেতু এটির কোনও অর্থ নেই।
আংশিক অ্যাপ্লিকেশন একাধিক যুক্তির একটি ফাংশনকে কম আর্গুমেন্টের ফাংশনে বিভক্ত করে যার এখন অনুপস্থিত যুক্তি সরবরাহিত মানের জন্য প্রতিস্থাপন করা হয়েছিল।
বন্ধকরণ একটি ফাংশন এবং একটি ডেটাসেটের মধ্যে ফাংশনটি বিভক্ত করে যেখানে ফাংশনের অভ্যন্তরের ভেরিয়েবলগুলি যা পাস হয় নি তা মূল্যায়ন করতে বলা হলে তার সাথে বাঁধার জন্য কোনও মান সন্ধান করতে ডেটাসেটের ভিতরে দেখতে পারে look
এই সমস্ত সম্পর্কে বিভ্রান্তিকর বিষয়টি হ'ল এগুলি অন্যের একটি উপসেট বাস্তবায়নের জন্য প্রতিটি ধরণের ব্যবহার করা যেতে পারে। সুতরাং সংক্ষেপে, তারা সমস্ত কিছু বাস্তবায়ন বিশদ। এগুলি সকলেই সমান মান দেয় যে আপনাকে সমস্ত মান সম্মুখে সংগ্রহ করার দরকার নেই এবং এতে আপনি ফাংশনের অংশটি পুনরায় ব্যবহার করতে পারবেন, যেহেতু আপনি এটিকে বিচক্ষণ ইউনিটে বিভক্ত করেছেন।
প্রকাশ
আমি কোনওভাবেই এই বিষয়টির বিশেষজ্ঞ নই, আমি সম্প্রতি এইগুলি সম্পর্কে শিখতে শুরু করেছি এবং তাই আমি আমার বর্তমান বোঝাপড়াটি সরবরাহ করি তবে এতে ভুল হতে পারে যা আমি আপনাকে চিহ্নিত করার জন্য আমন্ত্রণ জানিয়েছি এবং আমি যদি / হিসাবে ঠিক করে দেব আমি কোন আবিষ্কার।