ডার্ট কি গণনা সমর্থন করে?


91

ডার্ট কি গণনা সমর্থন করে? এই ক্ষেত্রে:

enum myFruitEnum { Apple, Banana }

দস্তাবেজগুলির একটি অভিসম্পূর্ণ অনুসন্ধান নং-এর প্রস্তাব দেয়।


4
কোড.google.com/p/dart/issues/detail?id=88 - এটি প্রদর্শিত হয় না
মাদুর

হ্যাঁ. ডার্ট এনামগুলিকে সমর্থন করে
এমজে মন্টস

উত্তর:


156

১.৮ থেকে শুরু করে আপনি এ জাতীয় এনাম ব্যবহার করতে পারেন:

enum Fruit {
  apple, banana
}

main() {
  var a = Fruit.apple;
  switch (a) {
    case Fruit.apple:
      print('it is an apple');
      break;
  }

  // get all the values of the enums
  for (List<Fruit> value in Fruit.values) {
    print(value);
  }

  // get the second value
  print(Fruit.values[1]);
}

1.8 এর আগে পুরানো পদ্ধতির:

class Fruit {
  static const APPLE = const Fruit._(0);
  static const BANANA = const Fruit._(1);

  static get values => [APPLE, BANANA];

  final int value;

  const Fruit._(this.value);
}

শ্রেণীর মধ্যে থাকা স্থিতিশীল ধ্রুবকগুলি সংকলনের সময় ধ্রুবক এবং এই শ্রেণিটি এখন ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ, switchবিবৃতি:

var a = Fruit.APPLE;
switch (a) {
  case Fruit.APPLE:
    print('Yes!');
    break;
}

4
ব্যবহার constসর্বদা সম্ভব নয় (যদি এনামগুলি এমন বৈশিষ্ট্যগুলি দিয়ে তৈরি করা যায় যা নাও হতে পারে const)। এজন্য আমি আমার উত্তরে এটি ব্যবহার করি নি (যদিও আমি মাঝে মাঝে constআমার কোডটিতে এনাম ব্যবহার করি)।
আলেকজান্দ্রে আরধুইন

আমি এই উত্তরটি গ্রহণ করব কারণ এটি অবশ্যই একটি সুইচ বিবৃতিতে
psuedo এনাম

4
@ কাইসেলগ্রেন নোট আমি মনে করি স্টাইল গাইডটি এখন পরিবর্তিত হয়েছে, সুতরাং এনাম মানগুলি সমস্ত ক্যাপের পরিবর্তে কম উটের ক্ষেত্রে হওয়া উচিত। Dartlang.org/articles/style-guide/…
গ্রেগ লো

4
কি List<Fruit> value?
টম রাসেল

4
আপনি সম্ভবত লেখার বোঝানো for (Fruit value in Fruit.values), অন্যথায় ডার্ট একটি ত্রুটি দেখায়
illright

9

R41815 এর সাথে ডার্ট নেটিভ এনাম সাপোর্ট পেয়েছে দেখুন http://dartbug.com/21416 এবং এর মতো ব্যবহার করা যেতে পারে

enum Status {
  none,
  running,
  stopped,
  paused
}

void main() {
  print(Status.values);
  Status.values.forEach((v) => print('value: $v, index: ${v.index}'));
  print('running: ${Status.running}, ${Status.running.index}');
  print('running index: ${Status.values[1]}');
}

[স্ট্যাটাস.নোন, স্ট্যাটাস.আরুনিং, স্ট্যাটাস.স্টপড, স্ট্যাটাস.পেজড]
মান: স্ট্যাটাস.নোন, ইনডেক্স: 0
মান: স্ট্যাটাস.আরানিং, ইনডেক্স: 1
মান: স্ট্যাটাস.স্টপড, ইনডেক্স: 2
মান: স্ট্যাটাস.পেজ, সূচক: 3
চলমান: স্থিতি.আরুনিং, 1
চলমান সূচক: স্থিতি.আরুনিং ning

একটি সীমাবদ্ধতা হ'ল এনুম আইটেমটির জন্য কাস্টম মানগুলি সেট করা সম্ভব নয়, সেগুলি স্বয়ংক্রিয়ভাবে নম্বরযুক্ত।

এই খসড়াটিতে আরও বিশদ https://www.dartlang.org/docs/spec/EnumsTC52draft.pdf


4

এই এবং এই আপনার প্রশ্নে উত্তর হতে পারে:

... for the technology preview it was decided to leave it out and just 
use static final fields for now. It may be added later.

আপনি এখনও এর মতো কিছু করতে পারেন:

interface ConnectionState { }
class Connected implements ConnectionState { }
class Connecting implements ConnectionState { }
class Disconnected implements ConnectionState { }

//later
ConnectionState connectionState;
if (connectionState is Connecting) { ... }

যা আমার মতে ব্যবহারের জন্য আরও স্পষ্ট। অ্যাপ্লিকেশন কাঠামোর প্রোগ্রামিংয়ের জন্য এটি কিছুটা বেশি কঠিন, তবে কিছু ক্ষেত্রে এটি আরও ভাল এবং পরিষ্কার।


আমি এই উদাহরণটির জন্য মনে করি, ইন্টারফেসটি ছেড়ে দিয়ে একটি ক্লাস ব্যবহার করা ভাল। ইন্টারফেসটি একটি
alচ্ছিক


2

এই পদ্ধতি সম্পর্কে:

class FruitEnums {
  static const String Apple = "Apple";
  static const String Banana = "Banana";
}

class EnumUsageExample {

  void DoSomething(){

    var fruit = FruitEnums.Apple;
    String message;
    switch(fruit){
      case(FruitEnums.Apple):
        message = "Now slicing $fruit.";
        break;
      default:
        message = "Now slicing $fruit via default case.";
        break;
    }
  }
}

4
আমি নিজের মতো এটি করতাম না। আমি এই নামটি বড়হাতে রাখি Fruit.APPLE। তারপরে যদি আমি পাঠ্য আউটপুট চাইতাম তবে আমার কাছে একটি মানচিত্র রয়েছে যা তাদের অনুবাদ করে বা কিছু ভাষা সমর্থন আলাদাভাবে অন্য ভাষাগুলিকে সমর্থন করতে চাইলে। আমি আরও মনে করি যে switchবিবৃতিগুলি পূর্ণসংখ্যার উপরে সবচেয়ে ভাল কাজ করে, কারণ তারপরে সেগুলি একটি লাফ টেবিলে সংকলিত হতে পারে।
কাই সেল্গ্রেন


0

টাইপ ক্লাস ফাইল ব্যবহার করুন।

প্রারম্ভিক প্রকার

সহজ, দ্রুত, আরও শক্তিশালী এবং আরও সহায়ক।

সামান্য সমস্যা, এটি এই শ্রেণিটি পাঁচটি পৃথক পছন্দ এবং নাল হিসাবে কাজ করার জন্য প্লাস একের মধ্যে সীমাবদ্ধ।

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