تهيئة المصفوفات باستخدام المشغل الثلاثية
-
22-09-2019 - |
سؤال
حاولت شيئًا كهذا:
boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};
لكن هذا الرمز لن يجمع. هل هناك أي تفسير لهذا؟ ليس funkyBoolean ? {1,2,3} : {4,5,6}
تعبير صحيح؟ شكرا لك مقدما!
المحلول
يمكنك فقط استخدام {1, 2, 3}
بناء الجملة في مواقف محدودة للغاية ، وهذا ليس أحدها. جرب هذا:
int array[] = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
بالمناسبة ، أسلوب جافا الجيد هو كتابة الإعلان على النحو التالي:
int[] array = ...
تحرير: للسجل ، سبب ذلك {1, 2, 3}
مقيد جدًا أن نوعه غامض. من الناحية النظرية ، يمكن أن تكون مجموعة من الأعداد الصحيحة ، الطويلة ، العوامات ، إلخ. إلى جانب ذلك ، تحظر ذلك قواعد جافا كما هو محدد من قبل JLS ، وهذا هو ذلك.
نصائح أخرى
boolean funkyBoolean = true;
int[] array = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
قد يتم تحديد مُعمى الصفيف في إعلان ، أو كجزء من تعبير إنشاء الصفيف (§15.10) ، إنشاء صفيف وتوفير بعض القيم الأولية
هذا ما جافا المواصفات يقول (10.6). لذا فإن الإصدار "القصير" (مع تعبير الإنشاء) مسموح به فقط في الإعلانات (int[] a = {1,2,3};
) ، في جميع الحالات الأخرى تحتاج إلى new int[]{1,2,3}
بناء ، إذا كنت ترغب في استخدام التهيئة.