سكالا ونموذج ذاكرة جافا
-
20-09-2019 - |
سؤال
يعامل نموذج ذاكرة Java (منذ 1.5). final
الحقول بشكل مختلف عن غيرfinal
مجالات.على وجه الخصوص، بشرط this
المرجع لا يفلت أثناء البناء، يكتب إلى final
يتم ضمان ظهور الحقول الموجودة في المنشئ على سلاسل الرسائل الأخرى حتى إذا تم توفير الكائن لسلسلة الرسائل الأخرى عبر سباق البيانات.(يكتب لغيرfinal
لا نضمن أن تكون الحقول مرئية، لذلك إذا قمت بنشرها بشكل غير صحيح، فقد يراها موضوع آخر في حالة تم إنشاؤها جزئيًا.)
هل هناك أي وثائق حول كيفية/إذا تم إنشاء مترجم Scala final
(بدلا من عدمfinal
) دعم الحقول للفصول الدراسية؟لقد بحثت في مواصفات اللغة وبحثت في الويب ولكن لم أجد أي إجابات محددة.(في المقارنة @scala.volatile
حاشية. ملاحظة يكون موثقة لوضع علامة على الحقل كـ volatile
)
المحلول
لقد بحثت في التاريخ لمعرفة متى تم إجراء التغيير.
- تقرير الشوائب أكتوبر 2007
- يقترف نوفمبر 2007
لا تغطي مواصفات اللغة إسقاط Scala في JVM.
نصائح أخرى
وويخلق حقل final
عندما تقوم بتعريف شيء باعتباره val
. أي شيء الذي يشير يمكن تعديلها، مثل var
، يمكن (واضح) لا يكون final
تحتها.
وهذا يعني أن case classes
تحتوي على حقول النهائية أيضا (كما الحجج لمنشئ فئة الحالة هي ضمنا val
s)
ولقد قدمت خطأ وثائق لهذا في سكالا نظام علة .