ما هو مكافئ سكالا من كتلة جافا الثابتة؟
-
23-09-2019 - |
سؤال
ما هو مكافئ سكالا من كتلة جافا الثابتة؟
المحلول
رمز في المُنشئ (أي الجسم) للكائن المصاحب ليس بالضبط نفس الكود في كتلة initialiser ثابتة لفئة Java. في المثال أدناه ، أقوم بإنشاء مثيل A ، لكن التهيئة لا تحدث.
scala> object Test { class A; object A { println("A.init") }}
defined module Test
scala> new Test.A
res3: Test.A = Test$A@3b48a8e6
scala> Test.A
A.init
res4: Test.A.type = Test$A$@6e453dd5
لتشغيل بناء الكائن المصاحب عند إنشاء الحالة الأولى للفئة ، يمكنك الوصول إليه من مُنشئ الفئة.
scala> object Test { class A { A }; object A { println("A.init") }}
defined module Test
scala> new Test.A
A.init
res5: Test.A = Test$A@4e94a28e
scala> new Test.A
res6: Test.A = Test$A@30227d4e
في العديد من الظروف ، لا يهم الفرق. ولكن إذا كنت تطلق صواريخ (أو آثار جانبية أخرى) ، فقد تهتم!
لا تنتمي إلى StackOverflow