নাম # এবং এফ # তে একটি মডিউলের মধ্যে পার্থক্য কী?


86

আমি সবেমাত্র এফ # শিখতে শুরু করেছি (। নেট সঙ্গে সামান্য পূর্বের অভিজ্ঞতার সাথে) সুতরাং খুব সাধারণ একটি প্রশ্নের জন্য আমাকে ক্ষমা করুন: এফ #-তে একটি নেমস্পেস এবং মডিউলের মধ্যে পার্থক্য কী?

ধন্যবাদ

ডেভ

সম্পাদনা করুন: ব্রায়ান উত্তরের জন্য ধন্যবাদ। এটাই আমি জানতে চেয়েছিলাম। কেবল একটি স্পষ্টতা: আপনি কি কোনও নামস্থানও খুলতে পারেন (বিবৃতি ব্যবহার করে সি # এর সমান)?


4
এবং আরও একটি নোট, আপনি যখন সিস্টেমের মতো এফ # তে একটি নেমস্পেস খুলবেন, আপনি তার উপ-নেমস্পেসগুলিতেও অ্যাক্সেস পাবেন। সুতরাং সি # তে, আপনি যদি সিস্টেম খোলেন, আপনার এখনও "সিস্টেম.আইও.ফাইলে" লিখতে হবে। F # এ, আপনি "IO.File" লিখতে পারেন। আমি এই কোডটি আরও সুন্দর করে তোলে।
মাইকেলগিজি

উত্তর:


94

একটি নেমস্পেস হ'ল নেট জিনিস, অনেকগুলি শিল্প-শক্তির ভাষায় প্রচলিত, ফ্রেমওয়ার্কগুলি সংগঠিত করার এবং বিভিন্ন গ্রন্থাগারের মধ্যে নামকরণের বিরোধগুলি এড়ানোর একমাত্র উপায়। আপনি এবং আমি উভয়ই "Foo" টাইপ সংজ্ঞায়িত করতে পারি এবং প্রকল্পে তাদের উভয়ই ব্যবহার করতে পারি, তবে তারা আলাদা আলাদা নেমস্পেসে থাকে (যেমন এনএস 1.ফু এবং এনএস 2.ফু)। নেট জড়িত নেম স্পেস।

মডিউলটি একটি এফ # জিনিস, এটি একটি "স্থিতিশীল শ্রেণীর" সাথে প্রায় একই রকম হয় ... এটি এমন একটি সত্তা যা লেট-বাউন্ড মান এবং ফাংশনগুলি ধরে রাখতে পারে, পাশাপাশি প্রকারগুলি (নোট স্পেসে সরাসরি মান / ফাংশন, নেমস্পেস থাকতে পারে না কেবলমাত্র প্রকারগুলিতে থাকতে পারে যা এতে মান এবং ফাংশন থাকে) মডিউলটির ভিতরে থাকা বিষয়গুলি "ModuleName.Thing" এর মাধ্যমে উল্লেখ করা যেতে পারে, যা নামের স্থানগুলির জন্য একই সিনট্যাক্স, তবে F # -র মডিউলগুলিও অযোগ্য অ্যাক্সেসের অনুমতি দেওয়ার জন্য 'খোলা' হতে পারে, যেমন

open ModuleName
...
Thing  // rather than ModuleName.Thing

(সম্পাদনা: নেমস্পেসগুলিও একইভাবে খোলা যেতে পারে, তবে মডিউলগুলি মান এবং ফাংশন ধারণ করে এমন একটি মডিউল খোলার বিষয়টি আরও 'আকর্ষণীয়' করে তোলে, যাতে আপনি মান এবং ফাংশন যেমন "কোস" ব্যবহার করতে পারেন, নাম হিসাবে ব্যবহার করতে পারেন) সরাসরি, অন্যদিকে। নেট ভাষাগুলিতে আপনার সাধারণত সর্বদা এটির যোগ্যতা অর্জন করতে হবে, যেমন "ম্যাথকোস"।

আপনি যদি এফ # তে 'শীর্ষ স্তরের' কোডটিতে টাইপ করেন তবে এই কোডটি স্পষ্টভাবে একটি মডিউলে যায়।

আশা করি এটি কিছুটা সহায়তা করে, এটি একটি দুর্দান্ত মুক্ত প্রশ্ন। :)


এটি পুরোপুরি সঠিক হতে পারে না। সি # তেও
আলেকজান্ডার বার্ড

4
ঠিক আছে, একটি নেটমডিউল আছে, যা একটি নেট নেট, এবং একটি এফ # মডিউল রয়েছে যা একটি এফ # জিনিস, এবং আমি মনে করি ভিবিতে একটি মডিউল নির্মাণ হতে পারে, এবং ক্লাসগুলি সাধারণ সফ্টওয়্যার ইঞ্জিনিয়ারিং অর্থে ... 'মডিউল' ... তবে আসল প্রশ্নটি ছিল এফ # মডিউল সম্পর্কে।
ব্রায়ান

4
এখানে একটি দুর্দান্ত লিঙ্ক রয়েছে , যা একটি সমাবেশ এবং নেট মডিউলটির মধ্যে সম্পর্কের ব্যাখ্যা দেয় - একটি একক সমাবেশে 2 টি ভিন্ন ভাষায় 2 টি নেটমডিউল লেখা থাকতে পারে।
দারিয়াস

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