সরকারী উত্তর
আরও ভাল দৃশ্যমানতার জন্য, সি # 8 ব্লগ পোস্ট থেকে এই নকশার সিদ্ধান্তটি ব্যাখ্যা করে ম্যাডস টর্গারসেনের একটি মন্তব্য :
শুরু থেকে শুরু থেকে শেষের পাটিগণিতের ক্ষেত্রে পাইথনকে অনুসরণ করার সিদ্ধান্ত নিয়েছিলাম। 0
প্রথম উপাদানটিকে (সর্বদা হিসাবে) এবং ^0
"দৈর্ঘ্য" উপাদানকে, যেমন শেষের একদম ঠিক করে দেয়। এইভাবে আপনি একটি সহজ সম্পর্ক পাবেন, যেখানে শুরু থেকে কোনও উপাদানের অবস্থান এবং শেষ থেকে তার অবস্থান দৈর্ঘ্যের সমান হয়। x
মধ্যে ^x
কি আপনি দৈর্ঘ্য থেকে বিয়োগ হয়ে যেত যদি আপনি গণিত কাজ শেষ করলেন নিজেকে হয়।
-
নতুন টুপি ( ^
) অপারেটরের পরিবর্তে বিয়োগ ( ) ব্যবহার করবেন না কেন ? এটি প্রাথমিকভাবে রেঞ্জগুলির সাথে সম্পর্কিত। আবার পাইথন এবং বেশিরভাগ শিল্পের সাথে তাল মিলিয়ে আমরা শুরুতে আমাদের রেঞ্জগুলি অন্তর্ভুক্তিকরূপে শুরু করতে চাই। আপনি যে সূচকটিটি বলতে পেরেছেন তা শেষ পর্যন্ত একটি পরিসীমা হওয়া উচিত? সি # তে উত্তরটি সহজ: শেষ x..^0
থেকে x
শেষ পর্যন্ত যায় । পাইথনে, আপনি দিতে পারেন এমন কোনও স্পষ্ট সূচক -0
নেই : কাজ করে না, কারণ এটি 0
প্রথম উপাদানটির সমান ! তাই পাইথন, আপনি শেষ সূচক বন্ধ ত্যাগ করার সম্পূর্ণরূপে করে এমন একটি ব্যাপ্তি শেষে যাওয়া প্রকাশ করার আছে: x..
। যদি পরিসীমাটির শেষ গণনা করা হয়, তবে আপনার যদি মনে হয় এটির ক্ষেত্রে বিশেষ যুক্তি রাখার দরকার আছে 0
। যেমন x..-y
, কোথায়y
গণনা করা হয়েছিল এবং বাইরে এসেছিল 0
। এটি বাগের একটি সাধারণ উপদ্রব এবং উত্স।
অবশেষে, লক্ষ করুন যে সূচকগুলি এবং ব্যাপ্তিগুলি .NET / C # তে প্রথম শ্রেণীর প্রকার। তাদের আচরণ যা তারা প্রয়োগ করা হয় তার সাথে বা এমনকি কোনও সূচকগুলিতে ব্যবহার করা যায় না। আপনি সম্পূর্ণরূপে আপনার নিজস্ব সূচক নির্ধারণ করতে পারেন যা সূচি গ্রহণ করে এবং অন্যটি গ্রহণ করে Range
- এবং আমরা উদাহরণস্বরূপ যেমন সূচকগুলি যুক্ত করতে যাচ্ছি Span
। উদাহরণস্বরূপ, আপনার কাছে এমন পদ্ধতিও থাকতে পারে যা রেঞ্জ গ্রহণ করে।
আমার উত্তর
আমি মনে করি এটি আমাদের ব্যবহৃত ক্লাসিক সিনট্যাক্সের সাথে মেলে:
value[^1] == value[value.Length - 1]
যদি এটি 0 ব্যবহার করা হয়, তখন দুটি সিনট্যাক্স পাশাপাশি-পাশাপাশি ব্যবহার করা হলে বিভ্রান্তিকর হবে। এইভাবে এটিতে কম জ্ঞানীয় বোঝা রয়েছে।
পাইথনের মতো অন্যান্য ভাষাও একই কনভেনশন ব্যবহার করে।
[beginInclusive, endExclusive)
। এটি একটি সাধারণ সম্মেলন।