هذه المقالة مخصصة للمبتدئين في البرمجة في Scala ، وأنا شخصياً ، وفقط لأولئك الذين يرغبون في بدء كتابة رمز البرنامج في VSCode.
حدث أن الدليل الوحيد للعمل مع Scala في Visial Studio Code كان
هذا الفيديو على قناة YouTube DevInsideYou. وهو يصف بتفصيل كبير عملية تثبيت وإعداد البيئة لكود VS و Text Sublime.
هذه المقالة عبارة عن تعديل للفيديو مع بعض الإضافات مني. يمكنك الذهاب لمشاهدة الفيديو أو متابعة قراءة هذا المقال (أو القيام بكليهما) ، وفي هذه الحالة ، آمل أن يكون مفيدًا لك.
تركيب
أول شيء يتعين علينا القيام به هو تثبيت
Scalu نفسه ، وكذلك نظام إنشاء مشروع
SBT ، إذا لم تكن قد قمت بذلك بالفعل.
للعمل مع Scala في VSCode ، هناك امتداد
للمعادن .
ميزات المعادن
- تشخيص دقيق عند الحفظ:

- الانتقال إلى التعريف ومساعدة الماوس المنبثق:

- نوع التعريف:

- الإكمال التلقائي عند الطلب:

الوظائف الأساسية فقط مدرجة هنا ، اتبع
الوثائق للحصول على وصف أكثر تفصيلاً.
فيما يلي مقتطف من فيديو DevInsideYou يوضح كيفية تفاعل Scala مع محرري الشفرات:
بروتوكول خادم اللغة - يُستخدم بين أداة العميل (IDE) والخوادم التي توفر وظائف خاصة بلغة البرمجة (الإكمال التلقائي ، والانتقال إلى التعريف ، وما إلى ذلك).
Metals =
Meta (من Scalameta) +
LS (من خادم اللغة - بروتوكول خادم اللغة القياسي).
يعمل LSP على تقليل تعقيد m-n من خلال توفير مستوى عالٍ من الدعم لأي لغة برمجة في أي محرر أو IDE أو نقطة نهاية العميل ، إلى مهمة m-plus-n أبسط. تم إنشاء
LSP بواسطة Microsoft لتحديد لغة شائعة يستطيع محللو لغة البرمجة التحدث بها. يدعم Microsoft Visual Studio Code هذا البروتوكول.
يتيح
LSP لمجتمعات اللغات التركيز على خادم لغة واحد عالي الأداء ، والذي يمكن أن يوفر إكمال التعليمات البرمجية ، تلميحات الأدوات ، انتقل إلى التعريف ، البحث عن الروابط وأكثر من ذلك بكثير ، بينما يمكن للمحررين ومجتمعات العملاء التركيز على إنشاء وحدة واحدة عالية الأداء وبديهية وامتداد اصطلاحي يمكنه التواصل مع أي خادم لغة لتوفير دعم لغوي عميق على الفور.
تهيئة المشروع
1 الطريق
التهيئة عبر
ملف سكالا . للقيام بذلك ، افتح مجلد المشروع وإنشاء الهيكل الافتراضي التالي فيه:
عينة الإخراج بعد البداية الأولى للمعادن:
2 الطريق
الطريقة الثانية تنطوي على استخدام
مطحنة . للقيام بذلك ، قم بإنشاء ملف build.sc في مجلد المشروع وافتحه.
عينة الإخراج بعد البداية الأولى للمعادن:
3 طرق (نهائي)
التهيئة مع
SBT . قم
بإنشاء ملف
build.sbt في مجلد المشروع بالمحتويات التالية:
name := "scala-vscode-example" version := "0.1" scalaVersion := "2.13.1" triggeredMessage := Watched.clearWhenTriggered autoStartServer := false scalacOptions ++= Seq( "-feature", "-deprecation", "-language:implicitConversions", "-language:higherKinds" ) addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.10.3")
عينة الإخراج بعد البداية الأولى للمعادن:
عندما تكتشف Metals مساحة عمل sbt والتي لا يوجد لها
مشروع / build.properties ، يظهر إشعار منبثق يوصيك بالترقية إلى 0.13.7:
يوصون باستخدام الإصدار 1.2.8 sbt. لتغيير إصدار sbt ، قم بإجراء التغييرات التالية على
ملف project / build.properties :
للتحقق من إصدار sbt ، استخدم الأمر:
$ sbt sbtVersion
نحن نهيئ بيئة عمل sbt في مجلد المشروع:
$ sbt
استيراد المشروع
لاستيراد المشروع ، انقر فوق الزر
استيراد بنية في الإشعار الذي يظهر أو أدخل الأمر:
بعد إجراء تغييرات على أي scala ، سيقوم ملف Metals تلقائيًا بترجمته:
طبيب
يستخدم لإصلاح مشاكل تكوين البناء المحتملة. لبدء الاستخدام:
الاستنتاج:
Bloop
Bloop هو خادم بناء وأداة CLI لـ Scala التي تعمل مع SBT ولديها دعم تجريبي لأدوات البناء الأخرى مثل
Maven و
Gradle و
Mill . إذا كانت مساحة العمل الخاصة بك تحتوي على دليل
.bloop مع ملفات Bloop JSON ، فستتصل Metals به تلقائيًا.
فوائد Bloop:- يجمع ويختبر ويدير كود سكالا في أسرع وقت ممكن. يحدث التجميع تلقائيًا عند تغيير شفرة المصدر ، ولا يتطلب تشغيل البرنامج واختباره إعادة التجميع ؛
- يدمج بسهولة مع أدوات البناء وتطبيقات سطر الأوامر والمحررين والأدوات المخصصة ؛
- يبدأ بشكل منفصل عن IDE ، لذلك لا يعتمد على إكماله أو إعادة تشغيله ؛
- إنه يسرع من فتح المشروع ، لأن Metals لا يحتاج إلى تشغيل الخادم المدمج لك.
يعرض المقتطف التالي من مقطع الفيديو "Happy Life With Scala Metals" عملية إنشاء التطبيق:
ملاحظة : هناك بعض الأخطاء في الشكل. يشير
غابرييل بترونيلا إليهم في تعليقه تحت الفيديو:
في الشكل ، أسهم BSP السفلية غير صحيحة من الناحية الفنية. كما أشرت (بشكل صحيح) ، إذا كانت أداة الإنشاء تتحدث عن BSP ، فيمكنها الاندماج مباشرة مع المعادن دون المرور عبر Bloop. يعد الانتقال من أداة إنشاء إلى Bloop طريقة لإضافة تكامل BSP إلى أداة الإنشاء نفسها ، وهي خطوة خاصة لا تستخدم BSP. يمكن الاطلاع على مزيد من المعلومات هنا .
يتكامل
Bloop مع IDEs ومحرري النصوص ، مما يوفر حلقة تغذية مرتدة قصيرة وتشخيصات مترجم موثوقة.
يستخدم Bloop في Metals بطريقتين ممكنتين :- إذا تم تثبيت Bloop على جهاز الكمبيوتر الخاص بك ، فسوف تتصل Metals ببساطة بخادم بناء موجود (مستحسن) ؛
- إذا لم يتم تثبيت Bloop ، فسيقوم خادم Metals بتنزيله وتشغيله في الوضع الأصلي.
SemanticDB هو نموذج بيانات للمعلومات الدلالية ، مثل الأحرف والأنواع ، حول البرامج في Scala واللغات الأخرى. بعد تجميع المشروع ، ترسل sbt-metal المعلومات إلى قاعدة بيانات semanticdb-scala المحلية.
تركيب بلوب
للبدء ، قم بتنزيل
أحدث إصدار :
$ curl -L https://github.com/scalacenter/bloop/releases/download/v1.3.2/install.py | python
بعد ذلك ، تحتاج إلى إنشاء نسخة من خدمة bloop للمستخدم الحالي:
$ cp ~/.bloop/systemd/bloop.service ~/.config/systemd/user/
أيضًا ، حتى لا تكتب باستمرار المسار إلى البرنامج النصي ، يمكنك نسخ bloop إلى
/ usr / bin :
$ sudo cp /.bloop/bloop /usr/bin/
إعادة تشغيل البرنامج الخفي systemctl:
$ systemctl --user daemon-reload
إضافة bloop لبدء التشغيل:
$ systemctl --user enable bloop
ومع ذلك ، إذا كنت لا تعمل مع Scala باستمرار ، فأنا لا أوصي بإزالة هذه الخدمة من بدء التشغيل. يمكنك تعطيل التشغيل التلقائي باستخدام الأمر التالي:
$ systemctl --user disable bloop
تشغيل bloop:
$ systemctl --user start bloop
عرض معلومات حول الاتصال الحالي:

إطلاق التطبيق
عند تشغيل خدمة bloop ، يمكنك تشغيل برنامجك المترجم باستخدام هذا الأمر في دليل المشروع:
$ bloop run <proj-name>
يمكنك أيضًا إضافة مفتاح الاختصار إلى
~ / .config / Code / User / keybindings.json :
{ "key": "meta+r", "command": "workbench.action.terminal.sendSequence", "args": { "text": "bloop run ${workspaceFolderBasename}\u000D" } }
إذا لم يكن لديك خدمة bloop قيد التشغيل ، يمكنك بدء التطبيق مباشرة من خلال sbt ، ومع ذلك ، في هذه الحالة ، سيتم إعادة ترجمة التطبيق في كل مرة ، مما سيؤثر على وقت بدء البرنامج:
$ sbt run
مصدر البيانات
توجد حالة اختبار صغيرة لمشروع سكالا في
هذا المستودع على جيثب. إذا كنت ستحتفظ أيضًا بمشاريعك ، فتأكد من إضافة قائمة الاستثناءات التالية إلى ملف
.gitignore :
*.class *.log project/ target/ .bloop/ .metals/