سؤال

الرجاء شرح كيفية مشغل الثلاثي يعمل مع العادية إذا/آخر كتلة.على سبيل المثال:

Boolean isValueBig = value > 100 ? true : false;

بالضبط مكررة: كيف يمكنني استخدام الثلاثي المشغل ؟

هل كانت مفيدة؟

المحلول

Boolean isValueBig = ( value > 100  ) ? true : false;


Boolean isValueBig;

if(  value > 100 ) { 
      isValueBig = true;
} else { 
     isValueBig = false;
}

نصائح أخرى

الفرق بين الثلاثي العملية إذا/آخر هو أن الثلاثي التعبير هو بيان أن يتم تقييمها إلى قيمة, بينما إذا/آخر لا.

استخدام الخاص بك على سبيل المثال ، تغيير من استخدام الثلاثي التعبير إذا/آخر هل يمكن استخدام هذا البيان:

Boolean isValueBig = null;
if(value > 100)
{ 
    isValueBig = true 
}
else
{
    isValueBig = false;
}

في هذه الحالة ، على الرغم من بيان ما يعادل هذا:

Boolean isValueBig = (value > 100);

عندما كنت جديدة إلى C++, لقد وجدت أنه ساعد على قراءة هذه التركيبة على النحو التالي:

Boolean isValueBig = if condition ? then x else: y;

(لاحظ أن هذا ليس رمز صالح.انها مجرد ما كنت دربت نفسي على قراءة في رأسي.)

Boolean isValueBig;

if (value > 100)
{
   isValueBig = true;
}
else 
{
   isValueBig = false;
}
Boolean isValueBig;

if(value > 100) { isValueBig = true; } else { isValueBig = false; }

كنت لا مروحة من مشغل الثلاثي لأنني اعتقدت أنه كان من الصعب قراءة.كما يحدث ذلك ، جون السكيت و كتابه ، C# في العمق وأخيرا ضرب هذا الكلب العجوز على رأسها جعلتها تغرق في.جون قال وأنا إعادة صياغة هذا السؤال.

قيمة > 100?

"نعم" :"لا"

الآن يمكن أن نرى المكفوفين.

نأمل أن يكون هذا يساعدك على جعل ذلك طبيعة ثانية.

كما نقلت من ?:مشغل MSDN الصفحة, "إن الشرطية المشغل (?:) يعود واحد من اثنين من القيم اعتمادا على قيمة منطقية التعبير".

بحيث يمكنك استخدام مشغل الثلاثي إلى عودة أكثر من مجرد القيم المنطقية:

   string result = (value > 100 ) ? "value is big" : "value is small";

PHP سبيل المثال

<?php

  // Example usage for: Ternary Operator
  $action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

  // The above is identical to this if/else statement
  if (empty($_POST['action'])) {
    $action = 'default';
  } else {
    $action = $_POST['action'];
  }

?>

"التعبير (expr1) ?(expr2) :(expr3) يقيم expr2 إذا expr1 يقيم صحيح, ، expr3 إذا expr1 يقيم كاذبة."

PHP الوثائق على عوامل المقارنة

تأكد من أنك لا تخلط أنواع true/false أجزاء في جاوة.وتنتج نتائج غريبة :-(

مثالا سيئا لأنه يمكن بسهولة كتابة

Boolean isValueBig = value > 100 ? true : false;

كما:

bool isValueBig = value > 100

أبعد من ذلك, الجميع قد أجبت على ذلك.أنا فقط لا نوصي باستخدام الثلاثي شركات مجموعة منطقي القيم منذ ما يتم تقييم بالفعل قيمة منطقية.

أنا أدرك أنه كان مجرد مثال ، ولكنه كان يستحق الإشارة.

الآخرين قد أجبت بالفعل ولكن هنا شيء واحد يجب أن نعرف حقا عن الثلاثي الاستخدام و أعني بذلك لا تفعل أي وقت مضى.

دعونا نفترض أن لديك قطعة من التعليمات البرمجية التي من المفترض أن عودة وجوه مختلفة كل الاختلاف ممكن من بعض القيمة ، يتيح القول simpliticy الله عدد صحيح بين 1 و 5.التعليمات البرمجية الخاصة بك تبدو مثل هذا:

if(i==1) {
    return new ObjectOne();
} else if(i==2) {
    return new ObjectTwo();
} else if(i==3) {
    return new ObjectThree();
} else if(i==4) {
    return new ObjectFour();
} else if(i==5) {
    return new ObjectFive();
} else {
    return new DefaultObject();
}

فإنه من السهل أن نفهم ولكن قليلا الثقيلة.منذ الثلاثي هو مجرد طريقة أخرى لكتابة if..else التي يمكن بتعميل الترميز إلى هذا

return (i==1) ? new ObjectOne() :
       (i==2) ? new ObjectTwo() :
       (i==3) ? new ObjectThree() :
       (i==4) ? new ObjectFour() :
       (i==5) ? new ObjectFive() : new DefaultObject();

هذا يسمى متداخلة الثلاثي.إنه الشر ، الآن عليك أن تعرف حول هذا الموضوع يرجى عدم استخدامه.قد يبدو أن يستخدم مثل هذه الحالة أعلاه لكنه من المرجح جدا أنه في حالات الحياة الحقيقية سوف تحتاج إلى استخدامه في مكان ما حيث يفقد القراءة (اعتقد تغيير تكوينات مع مقدار متغير من المعلمات مثل هذه).

مكافأة القطاع:لا تعيين قيم السمة الداخل إذا(), مجرد إلقاء نظرة على هذا: if(bool=true!=false) { .. }

كما نقلت من MSDN (لاحظ في الوظيفة السابقة)

سلسلة النتيجة = (القيمة > 100 ) ?"قيمة كبيرة" :"القيمة الصغيرة".

يمكن قراءته على النحو التالي:

هو قيمة أكبر من 100?إذا كان الجواب نعم ، سلسلة النتيجة هي "قيمة كبيرة" ، إذا لا, سلسلة النتيجة هي "القيمة الصغيرة".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top