প্রাথমিক নোট:
এই প্রশ্নটি বেশ কয়েকটি সম্পাদনার পরে বন্ধ হয়ে গেছে কারণ আমি কী চাইছিলাম তা সঠিকভাবে জানাতে আমার কাছে সঠিক পরিভাষার অভাব ছিল। স্যাম টোবিন-হচস্টাড্ট তখন একটি মন্তব্য পোস্ট করেছেন যা আমাকে ঠিক কীটি চিনতে পেরেছিল: প্রোগ্রামিং ভাষাগুলি যা ফাংশন রিটার্ন মানগুলির জন্য ছেদ করার ধরণকে সমর্থন করে।
এখন যে প্রশ্নটি আবার খোলা হয়েছে, আমি আরও (সুনির্দিষ্টভাবে) আরও সুনির্দিষ্টভাবে পুনরায় লিখে এটিকে উন্নত করার সিদ্ধান্ত নিয়েছি। অতএব, নীচে কিছু উত্তর এবং মন্তব্যগুলি আর অর্থবোধ করতে পারে না কারণ তারা পূর্ববর্তী সম্পাদনাগুলি উল্লেখ করে। (দয়া করে এ জাতীয় ক্ষেত্রে প্রশ্নের সম্পাদনার ইতিহাস দেখুন))
এমন কোনও জনপ্রিয় স্ট্যাটিকালি ও জোরালোভাবে টাইপ করা প্রোগ্রামিং ভাষা (যেমন হাস্কেল, জেনেরিক জাভা, সি #, এফ # ইত্যাদি) সমর্থন করে ফাংশন রিটার্ন মানগুলির জন্য ছেদ করার ধরণের ? যদি তা হয় তবে কোনটি এবং কীভাবে?
(আমি যদি সত্যবাদী হয়ে থাকি তবে আমি কাউকে মূল স্রোত যেমন যেমন সি # বা জাভাতে ছেদ করার ধরণগুলি কীভাবে প্রকাশ করতে হয় তার উপায় প্রদর্শন করে দেখতে খুব ভাল লাগবে))
ছেদ করার ধরণগুলি কেমন দেখতে পারে তার একটি দ্রুত উদাহরণ দেব, সি # এর মতো কিছু সিউডোকোড ব্যবহার করে:
interface IX { … }
interface IY { … }
interface IB { … }
class A : IX, IY { … }
class B : IX, IY, IB { … }
T fn() where T : IX, IY
{
return … ? new A()
: new B();
}
এটি হ'ল, ফাংশনটি fn
কোনও প্রকারের উদাহরণ দেয় T
, যার মধ্যে কলার কেবল এটিই জানে যে এটি ইন্টারফেস প্রয়োগ করে IX
এবং IY
। (এটি জেনেরিকের সাথে পৃথক নয়, কলকারীটি কংক্রিটের ধরণের পছন্দ করতে পারে না T
- ফাংশনটি করে। এটি থেকে আমি মনে করি যেT
বাস্তবে সর্বজনীন ধরণের নয়, তবে একটি অস্তিত্বের ধরণের))
পিএস: আমি সচেতন যে কেউ কেবল একটি সংজ্ঞায়িত করতে পারে interface IXY : IX, IY
এবং এর রিটার্নের ধরণের পরিবর্তন করতে fn
পারে IXY
। তবে, এটি আসলে একই জিনিস নয়, কারণ প্রায়শই আপনি IXY
একটি পূর্বনির্ধারিত ধরণের অতিরিক্ত ইন্টারফেসের উপর চাপ দিতে পারবেন না A
যা কেবল প্রয়োগ করে IX
এবং IY
পৃথক করে দেয়।
পাদটীকা: চৌরাস্তা প্রকার সম্পর্কে কিছু সংস্থান:
"টাইপ সিস্টেম" এর উইকিপিডিয়া নিবন্ধের ছেদযুক্ত প্রকারগুলি সম্পর্কে একটি উপবিংশ রয়েছে ।
বেঞ্জামিন সি পিয়ার্স (১৯৯১) এর প্রতিবেদন, "ছেদ প্রকার, ইউনিয়ন প্রকার এবং পলিমারফিজম সহ প্রোগ্রামিং"
ডেভিড পি। ক্যানিংহাম (২০০৫), "অনুশীলনের আনুপাতিক প্রকারগুলি" , যা উইকিপিডিয়া নিবন্ধে উল্লিখিত ফোর্সিথ ভাষা সম্পর্কিত একটি কেস স্টাডি ধারণ করে।
একটি স্ট্যাক ওভারফ্লো প্রশ্ন "ইউনিয়ন ধরনের এবং ছেদ ধরনের" যা বহু ভাল উত্তর পেয়েছি, তাদের মধ্যে এই এক যা ছেদ ধরনের উপরে খনি অনুরূপ একটি pseudocode উদাহরণ দেয়।
T
ইন্টারফেসের I
সমস্ত পদ্ধতি প্রয়োগ করার সাথে সাথে কোন ভাষাটি ইন্টারফেস হিসাবে ধরণের চিকিত্সার অনুমতি দেয় , কিন্তু সেই ইন্টারফেসটিকে ঘোষণা দেয় না" এ পরিবর্তিত করে ।
T
কোনও প্রকারের সংজ্ঞা দেয়, এমনকি যদি এটি কেবল "কিছু প্রকার যা প্রসারিত / সরঞ্জামIX
এবংIY
" হিসাবে ফাংশন ঘোষণার মধ্যে সংজ্ঞায়িত করা হয় । প্রকৃত রিটার্ন মান যে (A
বাB
যথাক্রমে) এর একটি বিশেষ ক্ষেত্রে এটি সত্য যে এখানে কিছু বিশেষ নয়, আপনিObject
পরিবর্তে ব্যবহার করে এটি অর্জন করতে পারেনT
।