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

دالات مضمنة هي الدالات التي تتكامل مباشرة الاتصال تعليمات برمجية.

استخدام دالات موضعي

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

غير ذلك من تمكين استخدام قيود عضو، الدالات المضمنة قد يفيد في تحسين تعليمات برمجية. ومع ذلك، الإفراط في استخدام من موضعي تؤدي وظائف تعليمات برمجية الخاصة بك ليكون أقل التلاعب بالتغييرات في برنامج التحويل البرمجي أمثلية الأداء وتنفيذ وظائف مكتبة. ولهذا السبب، يجب تجنب استخدام دالات مضمنة للحصول على الأمثلية إلا إذا كنت قد جربت الجميع غير ذلك تقنيات التحسين. في بعض الأحيان إجراء مضمنة دالة أو أسلوب "يمكن أن تحسن الأداء، ولكن هو الحالة ليس دائماً. ولذلك، يجب أيضا استخدام مقاييس الأداء للتحقق من ذلك بإجراء أي وظيفة معينة موضعي لدى بالفعل تأثير إيجابي.

inlineيمكن تطبيق معدّل إلى وظائف على مستوى إلى p على مستوى وحدة نمطية? أو في مستوى أسلوب فئة.

يلي تعليمات برمجية يوضح المثال دالة مضمنة في المستوى الأعلى وأسلوب مثيل مضمنة أسلوب ثابت مضمن.

let inline increment x = x + 1
type WrapInt32() =
    member inline this.incrementByOne(x) = x + 1
    static member inline Increment(x) = x + 1

دالات مضمنة و استنتاج النوع

وجود inlineيؤثر استنتاج النوع. Th هو هو دالات مضمنة يمكن أن ثابت تحليل نوع المعلمات، بينما لا الدالات غير مضمنة. يوضح المثال الرمز التالي هذه حالة الموقع inlineهو مفيدة لأنك تستخدم دالة يحتوي على معلمة نوع تم حلها بشكل ثابت، floatعامل تحويل.

let inline printAsFloatingPoint number =
    printfn "%f" (float number)

بدون inlineمعدّل، يفرض الاستخراج نوع دالة لنوع معين، في هذه الحالة int. ولكن مع inlineالمعدل، دالة هو الاستدلال أيضا أن معلمة نوع تم حلها بشكل ثابت. مع inlineهو الاستدلال التعديل، والنوع إلى يكون التالي:

^a -> unit when ^a : (static member op_Explicit : ^a -> float)

وهذا يعني أن دالة يقبل أي نوع يدعم تحويل إلى float.

راجع أيضًا:

المرجع

الدالات (F#)

القيود (F#)

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