ثابت تم الحل نوع معلمات (F#)

على حل نوع معلمة بشكل ثابت هو معلمة نوع الذي هو استبدالها بنوع فعلى في وقت التحويل البرمجي بدلاً من وقت التشغيل. فإنها تكون مسبوقة بواسطة رمز إقحام (^).

ˆtype-parameter

ملاحظات

في ب # اللغة، هناك نوعان مميزة من معلمات نوع. النوع أول هو عام القياسية نوع معلمة. هذه هي المشار إليها بعلامة اقتباس أحادية (')، كـ في 'Tو 'U. تكون مساوية لمعلمات نوع عام في غير ذلك.NET Framework اللغات. نوع آخر هو حل بشكل ثابت و هو المشار إليها برمز إقحام، كما في ^Tو ^U.

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

يلخص الجدول التالي من أوجه الشبه و الاختلافات بين نوعين من معلمات نوع.

الميزة

عام

حل بشكل ثابت

بناء الجملة

'T, 'U

^T, ^U

دقة الوقت

تشغيل الوقت

ترجمة الوقت

قيود عضو

ولا يمكن استخدامه مع عضو القيود.

يمكن أن يستخدم مع قيود العضو.

إنشاء التعليمة البرمجية

نوع (أو أسلوب) مع قياسي نتائج معلمات نوع عام في إنشاء نوع عام مفرد أو أسلوب.

instantiations العديد من أنواع والأساليب التي تم إنشاؤها، واحد لكل نوع التي مطلوبة.

استخدام أنواع

يمكن استخدام أنواع.

لا يمكن استخدام تشغيل الأنواع.

تستخدم مع موضعي وظائف

لا موضعي لا يمكن تعيين معلمات دالة مع معلمة نوع عام قياسية.

نعم. حل بشكل ثابت لا يمكن استخدام نوع المعلمات في الوظائف أو الوظائف التي لا موضعي.

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

موضعي ويمكن أيضا استخدام الدالات التي تستخدم عوامل تشغيل، أو استخدام دالات غير ذلك قد قامت بشكل ثابت حل نوع المعلمات، ووظائف حل بشكل ثابت نوع المعلمات أنفسهم. في أغلب الأحيان، infers الاستخراج نوع الدالات المضمنة مثل إلى تم حل معلمات نوع بشكل ثابت. يوضح المثال التالي بتعريف operaإلىr هو الاستدلال إلى تحتوي معلمة نوع تم حلها بشكل ثابت.

let inline (+@) x y = x + x * y
// Call that uses int.
printfn "%d" (1 +@ 1)
// Call that uses float.
printfn "%f" (1.0 +@ 0.5)

حل نوع (+@)هو استناداً إلى استخدام كل من (+)و (*)، كل من أي الاستخراج نوع السبب الاستدلال عضو القيود تشغيل معلمات نوع تم حلها بشكل ثابت. نوع حل، كـ هو مبين في مترجم F#, يتم كـ يتبع.

^a -> ^c -> ^d
when (^a or ^b) : (static member (+) : ^a * ^b -> ^d) and
     (^a or ^c) : (static member (+) : ^a & ^c -> ^b)

الإخراج هو كما يلي.

2
1.500000

راجع أيضًا:

المرجع

عام (F#)

الاستخراج نوع (F#)

القيود (F#)

موضعي الوظائف (F#)

موارد أخرى

تعميم تلقائي (F#)