هل يمكن للنقابات التمييزية الرجوع إلى بعضها البعض؟
-
27-09-2020 - |
سؤال
أنا أقوم ببناء شجرة تعبير باستخدام النقابات التمييزية.الكود أدناه:
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
يلقي خطأ لأنه لم يتم تعريف BoolExpression.يؤدي تبديل التعريفات إلى العكس (لم يتم تعريف IntExpression) كما تتوقع.
هل هناك طريقة للتغلب على ذلك؟
المحلول
نعم استخدم and
لتجميع تعريفات النوع مع التبعيات المتبادلة:
type IntExpression =
| TrueIsOne of BoolExpression
and BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
نصائح أخرى
"و" يعمل بشكل عام لأنواع ذات التبعيات المتبادلة.وهذا يعني أنه يعمل لجميع الأنواع، مثل النقابات التمييزية، كما هو موضح من قبل MAU، الطبقات والسجلات والوظائف العودية المتبادلة.
مثال غير مهم:
giveacodicetagpre.ربما هذا سيعمل:
giveacodicetagpre.(معلومات مأخوذة من هذه الصفحة على MSDN .)
لا تنتمي إلى StackOverflow