আমি জানি যে obj.func1().func2()
এটিকে মেথড চেইনিং বলা হয় তবে এর জন্য প্রযুক্তিগত শব্দটি কী:
func1(func2(), func3());
যেখানে কোনও ফাংশনের রিটার্ন অন্যটির পক্ষে যুক্তি হিসাবে ব্যবহৃত হয়।
obj.func1()
কোনও বস্তু সর্বদা ফেরত func2()
দেয়।
আমি জানি যে obj.func1().func2()
এটিকে মেথড চেইনিং বলা হয় তবে এর জন্য প্রযুক্তিগত শব্দটি কী:
func1(func2(), func3());
যেখানে কোনও ফাংশনের রিটার্ন অন্যটির পক্ষে যুক্তি হিসাবে ব্যবহৃত হয়।
obj.func1()
কোনও বস্তু সর্বদা ফেরত func2()
দেয়।
উত্তর:
আমি মনে করি না এটি ফাংশন রচনা। ফাংশন কম্পোজিশনের অর্থ f . g . h
হ্যাস্কেলের মতো দুটি বা আরও বেশি ফাংশন নেওয়া এবং এগুলিকে একটি নতুন ফাংশনে পরিণত করা । মনে রাখবেন যে এই মুহুর্তে কোনও ফাংশন ডাকা হয় না।
ব্যক্তিগতভাবে, আমি func1(func2(), func3())
"নেস্টেড ফাংশন কল" এর মতো নির্মাণগুলি উল্লেখ করব।
f(g())
করছে f()
প্রথম আর্গুমেন্টের জন্য একটি ভাবের সাথে কল করা, এবং এটি ঘটে ফাংশন কলটি g()
একটি অভিব্যক্তি হিসাবে যোগ্যতা অর্জন করে। তবে যদি এর জন্য কোনও নাম থাকতে হয় তবে এটি যতটা কাছে যায় তত কাছাকাছি।
গণিতে এটিকে ফাংশন কম্পোজিশন বলে । আমি মনে করি না যদিও আমি প্রোগ্রামিংয়ের ক্ষেত্রে এই শব্দটি প্রয়োগ করেছি শুনেছি। এটি হতে পারে কারণ কয়েকটি কারণে ব্যবহার বেশিরভাগ ক্ষেত্রে এড়ানো হয়েছে। ফাংশনগুলির পার্শ্ব প্রতিক্রিয়াগুলি উপস্থিত হওয়ার সময় এটি অদ্ভুত বাগগুলি পরিচয় করিয়ে দিতে পারে, সংযোজকরা ফানক 2 এর আগে ফানক 3 মূল্যায়ন করতে মুক্ত থাকার কারণে। এটি ডিবাগ করা আরও কঠিন কারণ আপনি ব্রেকপয়েন্টগুলি সেট করতে পারবেন না বা মধ্যবর্তী ফলাফলগুলি মুদ্রণ করতে পারবেন না এবং বেশিরভাগ লোকেরা কেবল এটি পড়তে অসুবিধে হন।
printf("%d %d\n", strlen(a), strlen(b));
মধ্যস্থতাকারী ভেরিয়েবলগুলি ব্যবহার না করে কোড লিখতে অস্বাভাবিক নয় ।
func1(func2(func3(x)))
। অথবা টেকনিক্যালি, এটি বোঝায় ফাংশন নিজেদের যদি g(x) = f1(f2(f3(x)))
, তারপর g
( না g(x)
) রচনা হয় f1
, f2
এবং f3
। যদিও আমি কোনও উপায় দেখতে পেলাম যেখানে আপনি কাঠামোটিকে "ফাংশন কম্পোজিশন" প্রশ্নে ডাকতে পারেন, এটি গাণিতিক দিক থেকে শব্দটির খুব অস্বাভাবিক ব্যবহার হিসাবে আমাকে আঘাত করেছে।
@ কার্ল বিলেফেল্ট পয়েন্ট হিসাবে, এটি ম্যাথে ফাংশন রচনা বলে।
প্রোগ্রামিং এ এই জিনিস জন্য কোন প্রযুক্তিগত শব্দ নেই। এবং আমি মনে করি এটি একটি ভাল জিনিস, কারণ এটি নির্দেশ করে যে অপারেশনটি স্বাভাবিক এবং অরথোগোনাল ।
প্রোগ্রামিং ল্যাঙ্গুয়েজে অরথোগোনালটির অর্থ আপনি এর প্রসঙ্গে পৃথক কোনও নির্দেশনা / ক্রিয়াকলাপ ব্যবহার করতে পারেন । উদাহরণস্বরূপ, আপনি নীচের সমস্ত উপায়ে একটি ফাংশন / পদ্ধতি কল করতে পারেন এবং এটি একই আচরণ করবে ...
f1()(f2(), f3());
x = y + f4();
if ( f5() && !f6() ) doSomething();
f7() = f8() + f9(); // in C++ when a function returns a reference
x = f10() ? f11(f12(f13(x))) : f14();
আপনি উইকিপিডিয়ায় প্রোগ্রামিংয়ে অর্থোগোনালিটি সম্পর্কে আরও পড়তে পারেন এবং স্ট্যাকওভারফ্লোতে এটি নিয়ে একটি প্রশ্ন রয়েছে ।
আমি শর্তগুলির সাথে সত্যই তেমন ভাল নই, তবে কিছুদিন আগে আমি একটি নিবন্ধ পড়েছিলাম যা উচ্চতর ক্রম শব্দটি বোঝায় , এবং এখানে উইকিপিডিয়া প্রতি সংজ্ঞাটির একটি বিমূর্ততা রয়েছে:
http://en.wikipedia.org/wiki/Higher-order_function
গণিত এবং কম্পিউটার বিজ্ঞানে উচ্চতর অর্ডার ফাংশন, কার্যকরী ফর্ম বা ফাংশনাল হ'ল ফাংশন যা নিম্নলিখিতগুলির মধ্যে কমপক্ষে একটি করে:
- ইনপুট হিসাবে এক বা একাধিক ফাংশন নিন
- আউটপুট একটি ফাংশন
অন্যান্য সমস্ত ফাংশন প্রথম অর্ডার ফাংশন। গণিতে উচ্চতর-ক্রিয়াকলাপগুলি অপারেটর বা ক্রিয়াকলাপ হিসাবেও পরিচিত। ক্যালকুলাসের ডেরাইভেটিভ একটি সাধারণ উদাহরণ, যেহেতু এটি কোনও ফাংশনটিকে অন্য ফাংশনে মানচিত্র করে।
সুতরাং এই ক্ষেত্রে, যেহেতু সেই পরিস্থিতিতে অন্তত একটি ইনপুট / পরম হিসাবে ফাংশন নেয়, তাই এটি একটি উচ্চতর ক্রম হিসাবে বিবেচিত হবে, আমি বিশ্বাস করি।
func1(func2, func3)
। অনুপস্থিত প্রথম বন্ধনী নোট করুন।
obj.func1().func2() is called method chaining
- সংশোধন: একে ট্রেনের ধ্বংসস্তূপ বলা হয়।