كما يعلم الكثير منكم ، أنا شاب من C #. لذلك ، إذا أردت فقط تجربة شيء ما ، فأنا عادة ما أقوم بفتح LINQPad وجرب شيئًا هناك. إذا كانت الأمور تنمو وتحتاج إلى مزيد من التحكم في التجارب ، فسوف أتخلى عن LINQPad ونشر تطبيق ConsoleApplication في Visual Studio. تعمل كلا الطريقتين بشكل جيد ، لكن سيكون من الجيد إذا كان هناك نوع من البيئة التي يمكنك من خلالها تجربة شيء ما داخل Visual Studio نفسه دون إنشاء مشروع جديد.
لحسن الحظ ، هناك واحد في F #.
هناك أداة رائعة تمامًا تسمى النافذة التفاعلية F # (FSI) ، والتي يمكنك العثور عليها باستخدام Visual Studio (أنا أستخدم VS 2012) ، على سبيل المثال:

بمجرد فتح نافذة F # التفاعلية ، سترى شيئًا مثل هذا:

الآن قد لا يبدو هذا عملاقًا كبيرًا ، لكن هذه النافذة تتيح لك القيام بالكثير من الأشياء بسهولة تامة. يمكن استخدامه للنماذج الأولية السريعة والاختبار ، إذا أردت.
وبهذه الطريقة يمكنك أن ترى أن لديك موجه
> في انتظار المدخلات الخاصة بك. دعنا نقدم شيئا؟
إعطاء المدخلات
كل ما عليك القيام به في نافذة F # التفاعلية للحصول على أي مدخلات هو إنهاء خطك بفواصل منقوطة اثنين ؛ "؛".
فيما يلي بعض الأمثلة الصحيحة للإدخال الصحيح.
الإعلان عن وظيفة ستأخذ قيمة ومربعًا لها (لاحظ أننا لم نحدد النوع x):
let squarer x = x * x;;
الآن دعنا نعلن عن متغير يحتوي على قيمة الإرجاع للدالة إلى الدالة squarer. من السهل القيام بذلك على النحو التالي:
let squared = squarer 10;;
عرض البيانات
إذا كنا نريد أن ننظر إلى البيانات ، فيمكننا أيضًا تقييم الأشياء بطريقة مماثلة. وبالتالي ، بافتراض أننا أدخلنا القيم أعلاه ، سنحصل على ما يلي:
- وظيفة مربع
- عاد نوع كثافة العمليات حسب الوظيفة
وبالتالي ، لتقييم أحدهم ، يقول "تربيع" ، يمكننا ببساطة كتابة شيء مثل هذا في سطر إدخال FSI:
squared;;
عندما نقوم بتشغيل هذا الخط في FSI ، ما يحدث هو أن القيمة معروضة في نافذة FSI ، شيء مثل هذا:
val it : int = 100
حيث يمكنك أن ترى أن القيمة هي 100 حقًا ، وهي نتيجة لاستدعاء سابق إلى دالة التربيع التي تم إنشاؤها في إطار FSI.
شيء رائع آخر قبل النهاية
قبل أن ننتهي من هذه المقالة ، أود فقط أن أذكر أنه يمكنك أيضًا استخدام نافذة FSI مع ملف البرنامج النصي F # إذا كنت ترغب في تجربة شيء سريع.
قل أنه كان لدي ملف نصي F # (FSX) مع الكود التالي فيه:
open System let squareRootMe x = System.Math.Sqrt(x)
وأردت تجربة ذلك في FSI ، يمكنني فقط تحديد سطور / مقطع الكود وتحديد تنفيذه في نافذة FSI.

الآن هو في نطاق نافذة FSI. مما يعني أنه يمكنني استخدام الوظيفة كما هو موضح هنا:
> let x = squareRootMe 144.0;; val x : float = 12.0