একটি ডার্নারি বা তিন-রাষ্ট্রের ভেরিয়েবল সঞ্চয় করার জন্য সেরা ডেটাটাইপ


13

দাবি অস্বীকার: আমি জানি যে ডেটাটাইপগুলি আপনি যে স্ক্রিপ্টিং / প্রোগ্রামিং ল্যাঙ্গুয়েজটি ব্যবহার করছেন তার কাছে কিছুটা বিষয়ভিত্তিক, আমি পাইথনে অগ্রাধিকার হিসাবে লিখতে চাই; যদিও আমি কোনও ল্যানুজেজ / বাস্তবায়ন সম্পর্কে শুনে খুশি।

তিন-রাষ্ট্রের ভেরিয়েবল সঞ্চয় করার জন্য সেরা ডেটাটাইপ কী? ইতিবাচক, নিরপেক্ষ এবং gণাত্মক কিছু উপস্থাপনযোগ্য বা উপস্থাপন করা।

উদাহরণ: ইন্টিজার -1, 0, 1

  • প্রো: খুব সংক্ষিপ্ত
  • প্রো: সম্ভাব্য দক্ষ, একক 2-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা যেতে পারে।
  • প্রো: একটি স্কেল হিসাবে ব্যবহার করা যেতে পারে যেমন ভাসমান পয়েন্ট গুণক হিসাবে।

উদাহরণ 2: 0, null, 1(অথবা কোন বিন্যাস)

  • প্রো: অ-নিরপেক্ষ ব্যবহারের ক্ষেত্রে বাইনারি হতে পারে।
  • কন: ডায়নামিক ডেটাটাইপ দরকার
  • কন: সম্ভাব্য সংক্ষিপ্ত নয়।

উদাহরণ 3: +, (খালি স্ট্রিং),-

  • প্রো: খুব সংক্ষিপ্ত
  • কন: অবস্থা নির্ধারণ করতে স্ট্রিং লজিক ব্যবহার করতে পারে।
  • প্রো ?: স্বজ্ঞাত গ্রাফিকাল উপস্থাপনা।

সম্ভবত কিছু বুদ্ধিমান বাইনারি যুক্তি রয়েছে যা কিছু চালাক করতে পারে যা আমি কল্পনাও করতে পারি না, সম্ভবত ব্যবহারের ক্ষেত্রে খুব বেশি বিবেচনা নির্ভর করে।

এছাড়াও, কোনও ডাটাবেস ইঞ্জিনে সঞ্চয় করার জন্য কোনও টের্নারি অবস্থাকে অভিযোজিত করার সময় কি কোনও বিবেচনা রয়েছে? রেফারেন্সের জন্য ইনোডাবের মতো।



আইবিডেম, তবে আমি এটিকে যুক্ত করব যে অনেক ভাষায়, গণিত প্রকারগুলি আপনাকে অন্য কোনও ধরণের জুতা দেওয়ার চেষ্টা করার চেয়ে অনেক বেশি সুরক্ষা দেয়।
blrfl

4
এই প্রশ্নটি ব্যবহারের ক্ষেত্রে অত্যন্ত নির্ভরশীল। সাধারণভাবে, তালিকাভুক্ত সমস্ত বাস্তবায়ন পছন্দ বিভিন্ন সময়ে বিভিন্ন উদ্দেশ্যে উপযুক্ত বলে মনে হয়।
রোবং

2
.NET এ আপনি একটি বুননযোগ্য বুলিয়ান ব্যবহার করতে পারেন। বেশিরভাগ ডাটাবেস আপনাকে একটি বুলিয়ান (বা বিট হিসাবে প্রায়শই বলা হয়) একটি অবনমিত স্থিতিতে সংরক্ষণ করতে দেয়। আপনি স্টোরেজ জন্য একটি গৃহস্থালি ব্যবহার করতে পারেন। চরটি স্টোরেজ পদ্ধতি পরিবর্তন না করে পরবর্তী সময়ে আরও কক্ষের অনুমতি দেবে।
অ্যাডাম জুকারম্যান

1
বুলের একটি পয়েন্টার ব্যবহারযোগ্যও হতে পারে। বুলকে 0 এবং 1 এ বাধ্য করা হয়েছে এবং পয়েন্টারটি যদি NULL হয় তবে আপনার তৃতীয় অবস্থা রয়েছে। অবশ্যই ল্যাঙ্গোজের উপর নির্ভর করে।
দেবোলাস

উত্তর:


7

এটি প্রকাশের সুস্পষ্ট এবং সুস্পষ্ট উপায় হ'ল একটি এনাম বাদে, আন্তঃব্যবযোগযোগ্য সিস্টেমের জন্য ব্যবহৃত সিস্টেমটি যেখানে একটি ভাষা-নির্দিষ্ট এনুম প্রকাশ করা যায় না তা হ'ল -1/0/1 বিকল্প।

আপনি যদিও বিটমাস্ক চেষ্টা করে দেখতে পারেন, যেখানে 0 এর অর্থ 0, 1 এর অর্থ 'বিট 2 সেট' এবং 2 এর অর্থ 'বিট 3 সেট' (যেমন আপনার কাছে 3 বিট রয়েছে যা চালু বা বন্ধ থাকতে পারে As যতক্ষণ আপনি সংজ্ঞা না দেন 3, বা 1 এবং 2 বিট বিট, তারপরে আপনি ভাল you এই বিকল্পটি সবচেয়ে ভাল যদি আপনি মনে করেন ভবিষ্যতে আপনার 4 বা 8 টি বেশি পতাকা লাগবে কারণ 4, 8, 16 ইত্যাদি পরবর্তী বিট সেট করে)।

এগুলি সমস্ত একক 8-বিট ডেটাটাইপের সাথে খাপ খায় তাই এটি মেমরির অপব্যয় বা রূপান্তর প্রয়োজন না (একটি চরিত্র ভিত্তিক সিস্টেম হিসাবে কখনও কখনও 16-বিট অক্ষর ব্যবহৃত হয়, কখনও কখনও আপনার প্ল্যাটফর্মের উপর নির্ভর করে 8-বিট)।

আমি কোনও ক্ষেত্রে নাল বিবেচনা করব না। হতে পারে একটি ডাটাবেসে, তবে কেবলমাত্র আমি যেখানে গ্যারান্টি দিতে পারি সিস্টেমটি NULLs এর জন্য পৃথক সমর্থন পেয়েছিল এবং তারপরেও এটির ত্রুটিযুক্ত প্রবণতা হতে পারে যদি কেউ স্পষ্টভাবে এই পার্থক্য না করে এবং 0 টি শেষ করে যখন এটি সত্যই বাতিল হয়।


এখানে সেরা উত্তর আইএমও। নুল এটি হতে পারে যে এটি কেবল ডিবিতে যুক্ত করা হয়নি, এটি নয় যে এর রাজ্যটি 'নুল' ছিল -1,0,1 এবং সম্ভবত নুল - নাল স্বতন্ত্রভাবে নির্দেশ করে যে ক্ষেত্রটি কখনই জনবহুল ছিল না!
কেন 16

3

আমি সরাসরি এই প্রশ্নের স্পষ্ট উত্তর লেখার ইচ্ছা করি না; আমি উপরে প্রশংসিত হিসাবে, এই প্রশ্নটি ব্যবহারের ক্ষেত্রে অত্যন্ত নির্ভরশীল। সাধারণভাবে, তালিকাভুক্ত সমস্ত বাস্তবায়ন পছন্দ বিভিন্ন সময়ে বিভিন্ন উদ্দেশ্যে উপযুক্ত বলে মনে হয়।

তবে আমি এই অন্তর্নিহিত নীতিগুলি এবং পটভূমির জ্ঞানের দিকে আপনার দৃষ্টি আকর্ষণ করতে চাই, যাতে আপনি নিজের জ্ঞাত সিদ্ধান্ত নিতে পারেন can


হালকা নোটে, এই রসিকতাটিও পড়ুন: "একজন ব্যবসায়ী একাউন্টেন্টকে জিজ্ঞাসা করেন; টু প্লাস টু কী?"

সমস্ত হিসাবরক্ষক এবং অ্যাকাউন্টবিহীনদের কাছে ক্ষমাপ্রার্থী। আমার এই রসিকতাটির উল্লেখটি হ'ল আমরা খুব শীঘ্রই সংজ্ঞায়িত করব এমন কিছু এবং তারপরে যে দায়বদ্ধতা এবং পরিণতি (উভয় যৌক্তিক অর্থে) এর স্বাধীনতা হাইলাইট করার উদ্দেশ্যে ।


প্রশ্ন: ত্রি-মূল্যবান যুক্তির সত্য ছকটি কী?

উত্তর:

... তার চেয়ার থেকে উঠে দরজার কাছে গিয়ে তা বন্ধ করে, ফিরে এসে বসল। ডেস্ক জুড়ে ঝোঁক,

... এবং কাগজের টুকরোতে হাতে আঁকানো চার্টটি বের করে।

অপারেশন: যৌক্তিক এবং - গোপনীয় - 2014 এর Q3 এর খসড়া

   FalseTrue Third
FalseFalseFalse?????
True FalseTrue ?????
Third???????????????

... তিনি নিচু স্বরে বলেন, " কত কি তোমার মত ঐ যাদু মান হতে হবে?"

একজন গ্রাফিক্স ডিজাইনার একজন প্রোগ্রামারকে জিজ্ঞাসা করেন, "আপনি কি তিন-মূল্যবান যুক্তির উদাহরণ দিতে পারেন?"

প্রোগ্রামার জবাব দেয়, "আপনি কি আমাকে দুটি রঙ দিতে পারেন, যা তাদের মত কালো এবং সাদা?"

গ্রাফিক ডিজাইনার: "তাই ... কালো, সাদা?"

প্রোগ্রামার: "ঠিক আছে। এখন আমি একটি তৃতীয় রঙ দিতে যাচ্ছি - তবে আমাকে এটি একটি এআরজিবি নম্বর হিসাবে নির্দিষ্ট করতে হবে I আশা করি আপনি আপত্তি করবেন না" "

গ্রাফিক ডিজাইনার: "আমি প্রতিদিন এআরজিবি নিয়ে কাজ করি ..."

Black#FF000000
White#FFFFFFFF
Nothing#00000000

লক্ষ্য। উপরের অংশে, কালো এবং সাদা পুরোপুরি অস্বচ্ছ রঙ। তৃতীয় রঙ, কিছুই না পুরোপুরি স্বচ্ছ। বিভিন্ন অনুপাতের সাথে একত্রে মিশ্রিত হয়ে গেলে, কালো এবং সাদা মিশ্রিত হয়ে বিভিন্ন ধূসর হয়ে যায়, তবে কিছুই মিশ্রিত হওয়ার ফলে কোনও পরিবর্তন হয় না।


আমি সত্যের ছক ব্যবহার করে বেশ আগ্রহী, আবার আমার নিজের প্রশ্নের পিছনে অর্থটির দিকে চোখ খুলছি।
থারস্মমনার

1

তিনটি সম্ভাব্য রাজ্যের যদি কিছু অন্তর্নিহিত অর্থ থাকে তবে সেই অন্তর্নিহিত অর্থের জন্য উপযুক্ত কিছু ব্যবহার করুন। উদাহরণস্বরূপ, এটি সম্ভাব্য রাজ্যগুলি 1, 2 বা 3, বা তারা 100, 200 এবং 300 হয় তবে পূর্ণসংখ্যা ব্যবহার করে। যদি সম্ভাব্য রাজ্যগুলি হ্যাঁ, না, বা অজানা হয় তবে আপনি কোনও বুলিয়ান অবজেক্টের জন্য একটি alচ্ছিক বুলিয়ান বা পয়েন্টার ব্যবহার করতে পারেন, যার কোনও মান, "হ্যাঁ" মান, বা "কোনও" মান থাকবে না। যদিও কিছু লোক এটি পছন্দ নাও করতে পারে।

যদি কোনও স্পষ্ট উপায় থাকে যে কিভাবে পূর্ণসংখ্যার সম্ভাব্য রাজ্য হিসাবে ব্যাখ্যা করা যায়, আপনি পূর্ণসংখ্যা ব্যবহার করতে পারেন। তুলনা ফাংশন বলুন যাতে "কম", "সমান", "বৃহত্তর" -1, 0 এবং +1 ব্যবহার করতে পারে। যদিও কিছু লোক আপনাকে যা স্পষ্ট বলে মনে হচ্ছে তা সুস্পষ্ট নাও পেতে পারে।

চিঠিগুলি কীভাবে সম্ভাব্য রাজ্য হিসাবে ব্যাখ্যা করা যায় তার কোনও সুস্পষ্ট উপায় থাকলে আপনি একটি অক্ষর ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনার রাজ্যগুলি "লাল", "সবুজ" বা "নীল" হয় তবে আপনি 'r', 'g' এবং 'b' অক্ষর ব্যবহার করতে পারেন। আবার, আপনার কাছে কী স্পষ্ট ...

একটি গণনা করা টাইপ সর্বদা একটি সম্ভাবনা। একটি স্ট্রিং সর্বদা একটি সম্ভাবনা, তবে আপনি বেশিরভাগ ভাষায় টাইপ চেকিং হারাবেন।

কিছু লোক তিনটি বুলিয়ান মান ব্যবহার করে "হয় রাজ্যে 1", "রাজ্যে 2", "রাজ্যে 3" উপস্থাপন করে।

আপনি যা কিছু করুন না কেন, আপনাকে স্পষ্ট এবং বোধগম্য এমন কিছু ব্যবহার করার চেষ্টা করে পরিচালিত হওয়া উচিত, হঠাৎ আপনার চারটি অবস্থা থাকলে সমস্যার মধ্যে পড়বেন না এবং সংকলকটি যতটা সম্ভব ভুলগুলি খুঁজে বার করুন।


0

তিন-রাষ্ট্রের ভেরিয়েবল সঞ্চয় করার জন্য সেরা ডেটাটাইপ কী? ইতিবাচক, নিরপেক্ষ এবং gণাত্মক কিছু উপস্থাপনযোগ্য বা উপস্থাপন করা।

এটি ভাষার উপর নির্ভর করে, আপনি কী করছেন, বিমূর্ত স্তর (যা ভাষার উপরও নির্ভর করে)।

আমি মূলত সি ++ ব্যবহার করি এবং এখানে অনেক পছন্দ আছে। সহজতম একটি enum tribool_state { false_val, true_val, undetermined_val }। আপনার ব্যবহারের দৃশ্যে এই ধরণের মানটি ফেরত দেওয়া যদি একক ফাংশন হয় তবে এটি যথেষ্ট।

আমি সম্ভবত ব্যবহার করতে পারি boost::optional<bool>যদি আমি এমন কোনও বুলিয়ান ফলাফল প্রকাশ করতে চাইতাম যা পাওয়া অসম্ভব হতে পারে (যেমন, প্রাপ্ত নেটওয়ার্কের ডেটা সম্পূর্ণ হয়েছে কিনা তা পরীক্ষা করে দেখুন, তারপরে যদি সেটি হয় তবে বুলিয়ান মানটি প্রসেস করুন)।

আমি ব্যবহার করেন boost::triboolযদি আমি একটি ঝাপসা বুলিয়ান ফলে পূর্ণ ত্রি-রাষ্ট্র বুলিয়ান লজিক সমর্থিত (যেমন প্রকাশ করতে চেয়েছিলেন true || indetermined -> true, false && indetermined -> false, true && indetermined -> indeterminedইত্যাদি)।

একইভাবে, পাইথনে, আমি একটি ধ্রুবক বা একটি শ্রেণি ব্যবহার করব (আবার ক্লায়েন্ট কোডে আমার কী ধরণের শব্দার্থকতা / ক্রিয়াকলাপের প্রয়োজন হবে তার উপর নির্ভর করে):

উদাহরণস্বরূপ, আমি ব্যবহার করব:

POSITIVE, INDETERMINED, NEGATIVE = 1, 0, -1

যদি আমার কোনও ফাংশনটির একটি সাধারণ কেস থাকে তবে তিনটি ফলাফলের মধ্যে একটি ফেরত দেয়।

যদি আমার পরিবর্তে একটি পূর্ণ লাইব্রেরি থাকে ত্রি-রাষ্ট্রীয় বুলিয়ান যুক্তিযুক্তের জন্য, আমি মান শ্রেণি হিসাবে প্রয়োগ করতাম।


0

আপনি যদি জাভা ব্যবহার করছেন তবে আপনি বুলিয়ান অবজেক্টটি ব্যবহার করতে পারেন: যেহেতু এটি একটি বস্তু এবং এতে একটি বুলিয়ান রয়েছে, এটি মানগুলি সত্য, মিথ্যা এবং নালাকে ধরে রাখতে পারে। যদিও এটি সবচেয়ে ভাল উপায় তবে আমি নিশ্চিত নই।


-6

মাইক্রোসফট.নেট-এ একটি ধরণের "টুপল" রয়েছে যা আপনার প্রয়োজনের জন্য ব্যবহার করা যেতে পারে। পরিদর্শন http://msdn.microsoft.com/en-us/library/system.tuple%28v=vs.110%29.aspx


প্রতি পৃষ্ঠায়: একটি টুপল একটি ডেটা স্ট্রাকচার যা একটি নির্দিষ্ট সংখ্যা এবং উপাদানগুলির ক্রম থাকে। একটি টিউপলের একটি উদাহরণ তিনটি উপাদান সহ একটি ডেটা স্ট্রাকচার (3-টিপল বা ট্রিপল হিসাবে পরিচিত) যা প্রথম উপাদানটিতে কোনও ব্যক্তির নাম, দ্বিতীয় উপাদানের এক বছর এবং ব্যক্তির আয়ের মতো সনাক্তকারী সংরক্ষণ করতে ব্যবহৃত হয় তৃতীয় উপাদান মধ্যে যে বছর জন্য। .NET ফ্রেমওয়ার্কটি এক থেকে সাতটি উপাদানের সাথে সরাসরি টিপলগুলিকে সমর্থন করে। এছাড়াও, আপনি একটি টিপল <টি 1, টি 2, টি 3, টি 4, টি 5, টি 6, টি 7, ট্রেষ্ট> অবজেক্টের বাকী সম্পত্তিতে টিপল অবজেক্টগুলিকে বাসা বেঁধে আট বা ততোধিক উপাদানের টুপলস তৈরি করতে পারেন।
অ্যাডাম জুকারম্যান

1
এটি বলছে যে একটি টুপল কোনও প্রকারের মধ্যে একটি অক্টোপল (8 মাত্রা) পর্যন্ত সংরক্ষণ করতে পারে।
অ্যাডাম জুকারম্যান


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

2
একটি টিপল হ'ল ডেটাটাইপ যা একাধিক উপাদান সংরক্ষণ করতে পারে, স্ট্রাক্টের মতো কিছু, কেবলমাত্র গতিশীলভাবে সংজ্ঞায়িত। সুতরাং এটি ওপি চেয়েছিল ধরণের 3 ভেরিয়েবল সংরক্ষণ করবে। এটি যে সামগ্রীটি চেয়েছিল তাতে সীমাবদ্ধতা সরবরাহ করে না।
gbjbaanb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.