কেন F # কোর জেনেরিক অ্যারে প্রকারগুলি সংজ্ঞায়িত করে?


11

আমি কেবল লক্ষ্য করেছি যে FSharp.Core নেমস্পেসে জেনেরিক অ্যারে প্রকারের 4 টি মাত্রা, যেমন কোর রয়েছে includes [] <'টি> , কোর [ System.Array এর সাথে - যদিও তারা কীভাবে দৃ int়ভাবে টাইপযুক্ত বিশেষায়িত অ্যারে টাইপগুলিকে ইনট [], স্ট্রিং [] সমর্থন করে পরিচালনা করে তা আমার কাছে পরিষ্কার নয়।

আমার ধারণা এটি তখন দুটি প্রশ্ন হয়ে যায়:

  • অ-জেনেরিক সিস্টেমের উপর ভিত্তি করে সি # কীভাবে দৃ -়-টাইপযুক্ত বিশেষ অ্যারে প্রকারের মত []] সমর্থন করে? অরে?
  • সি # এই কাজটি পরিচালনা করে, এফ কেন # জেনেরিক অ্যারে প্রকারগুলি সংজ্ঞায়িত করে?

উত্তর:


8

F # প্রতি সেচে জেনেরিক অ্যারে ধরণের সংজ্ঞা দেয় না। এফ # তে অ্যারেগুলি। নেট ব্যবহারের মতো একই অ্যারে টাইপ, এবং বিপরীত দিকে নির্দেশিত সমস্ত সিনট্যাক্টিক প্রমাণ থাকা সত্ত্বেও, তারা জেনেরিক নয়।

আপনি যখন এফ # তে প্রতিবিম্ব ব্যবহার করছেন তখন কখনও কখনও এটি আপনার বিরুদ্ধে প্রতিক্রিয়া array<int>জানাতে পারে - এমনকি যদি আপনার এমন কোনও থাকে যা পুরোপুরি বৈধ জেনেরিক ধরণের বলে মনে হয়, আপনি যখন এটি পরীক্ষা করেন তখন আপনি কোনও মিথ্যা IsGenericType, সত্য থেকে প্রাপ্ত হন IsArrayএবং আপনি টাইপ যুক্তি পেয়ে থাকেন GetElementTypeবরং সাথে GetGenericArguments

তেলস্তিন যেমন তার উত্তরে উল্লিখিত রয়েছে, সম্ভবত এটি আমাদের কাছে থাকতে হবে। নেট নেট the.০ এর উত্তরাধিকারী ব্যাগেজ। তবে এটি এমন অনেক কিছুর মধ্যে একটি যা এফ # আসল মাইনফিল্ডে প্রতিবিম্ব এপিআই ব্যবহার করে।

এফ # টি কী সংজ্ঞায়িত করে, [], [,] ...প্রকারের সংক্ষিপ্ত বিবরণগুলি / এলিয়াসগুলি / অপারেটরগুলি এবং সম্পর্কিত ফাংশনগুলির সাথে মডিউলগুলি তবে তারা সবশেষে নীচে একই অ্যারে প্রকারটি উল্লেখ করে।

আপনি নিজের জন্য এটি দেখতে এখানে এবং এখানে গিথুবের উত্স কোডটি দেখতে পারেন।


তবে এগুলি প্রকৃত প্রকার হিসাবে তালিকাভুক্ত করা হয়, প্রকারের মতো নয়। আমি বিভ্রান্ত কারণ কারণ এমএসডিএন.মাইক্রোসফটকম /en-us/library/dd233214.aspx "সমস্ত এফ # অ্যারের ধরন হ'ল। নেট ফ্রেমওয়ার্ক টাইপ অ্যারে", তবে তারপরে সিস্টেম.আরে এবং FSharp এর মধ্যে সম্পর্ক কী? .জেনারিক অ্যারে?
আসিক

জেনেরিক অ্যারে নেই;) এগুলি প্রযুক্তিগত দিক থেকে প্রকৃত প্রকারের হতে পারে এবং এ কারণেই এমএসডিএন ডক জেনারেটর তাদের বাছাই করেছে, তবে তারা যেটি নির্দিষ্ট করে তা হ'ল সংকলকটি কীভাবে তাদের প্রসারিত করা উচিত, যদি আমি এটিতে সঠিকভাবে পড়ি (প্রথম ফাইলটি আমি সংযুক্ত করেছি) , এবং দ্বিতীয় ফাইলটিতে একটি দম্পতি সম্প্রসারণ পদ্ধতি। এখানেই শেষ এটা পেতে ওখানে যাও. এর মধ্যে একটি তৈরি করুন এবং এটিতে গেটটাইপ কল করুন। এটি System.Array এর উপর ভিত্তি করে একটি বিশেষায়িত অ্যারে টাইপ হবে।
scrwtp

বা বরং, স্থিতিশীল প্রকারগুলি নিজেরাই জেনেরিক তবে রানটাইম অ্যারে টাইপ যা তারা মোড়ানো তা নয়। হতে পারে প্রকারের অনুমান প্রয়োগ করা সেই পথে কিছুটা সহজ তবে এটি একটি বুনো অনুমান।
scrwtp

5

অ-জেনেরিক সিস্টেমের উপর ভিত্তি করে সি # কীভাবে দৃ -়-টাইপযুক্ত বিশেষ অ্যারে প্রকারের মত []] সমর্থন করে? অরে?

খুব সম্ভবত, একটি বিশেষায়িত শ্রেণি তৈরি করে যা উত্তরাধিকার সূত্রে প্রাপ্ত হয় System.Arrayযেহেতু জেনেরিকগুলি 1.0 এ উপলব্ধ ছিল না। আচরণটি সম্ভবত সামঞ্জস্যের জন্য রাখা হয়েছিল।

সি # এই কাজটি পরিচালনা করে, এফ কেন # জেনেরিক অ্যারে প্রকারগুলি সংজ্ঞায়িত করে?

কারণ F # এর বিদ্যমান কোডগুলির সাথে সি # 2.0 তেমন সামঞ্জস্যতার সীমাবদ্ধতা ছিল না। আমি যা জানি তার উপর ভিত্তি করে, সি # ২.০ এর জেনেরিক অ্যারে প্রকারগুলি থাকলে যদি এটি সি # এর প্রথম প্রকাশ হয়।

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