سؤال

يعامل نموذج ذاكرة Java (منذ 1.5). final الحقول بشكل مختلف عن غيرfinal مجالات.على وجه الخصوص، بشرط this المرجع لا يفلت أثناء البناء، يكتب إلى final يتم ضمان ظهور الحقول الموجودة في المنشئ على سلاسل الرسائل الأخرى حتى إذا تم توفير الكائن لسلسلة الرسائل الأخرى عبر سباق البيانات.(يكتب لغيرfinal لا نضمن أن تكون الحقول مرئية، لذلك إذا قمت بنشرها بشكل غير صحيح، فقد يراها موضوع آخر في حالة تم إنشاؤها جزئيًا.)

هل هناك أي وثائق حول كيفية/إذا تم إنشاء مترجم Scala final (بدلا من عدمfinal) دعم الحقول للفصول الدراسية؟لقد بحثت في مواصفات اللغة وبحثت في الويب ولكن لم أجد أي إجابات محددة.(في المقارنة @scala.volatile حاشية. ملاحظة يكون موثقة لوضع علامة على الحقل كـ volatile)

هل كانت مفيدة؟

المحلول

لقد بحثت في التاريخ لمعرفة متى تم إجراء التغيير.

لا تغطي مواصفات اللغة إسقاط Scala في JVM.

نصائح أخرى

وويخلق حقل final عندما تقوم بتعريف شيء باعتباره val. أي شيء الذي يشير يمكن تعديلها، مثل var، يمكن (واضح) لا يكون final تحتها.

وهذا يعني أن case classes تحتوي على حقول النهائية أيضا (كما الحجج لمنشئ فئة الحالة هي ضمنا vals)

ولقد قدمت خطأ وثائق لهذا في سكالا نظام علة .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top