سؤال

لقد بدأت مؤخرًا اللعب مع Scala (2.8) ولاحظت أن يمكنني كتابة الكود التالي (في مترجم Scala):

scala> var x : Unit = 10
x : Unit = ()

ليس من الواضح ما الذي يحدث هناك. لم أتوقع حقًا رؤية أي تحويل ضمني إلى وحدة.

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

المحلول

انظر القسم "6.26.1 تحويلات القيمة" في ال مواصفات لغة سكالا الإصدار 2.8:

...

التخلص من القيمة. إذا e له نوع من القيمة والنوع المتوقع هو الوحدة ، e يتم تحويله إلى النوع المتوقع عن طريق تضمينه في المصطلح { e; () }.

...

نصائح أخرى

يمكن تحويل أي شيء إلى وحدة. هذا ضروري في الغالب لدعم أساليب التأثير الجانبي والتي مع ذلك قيم إرجاع ، ولكن في حالة تجاهل قيمة الإرجاع غالبًا. على سبيل المثال

import java.util.{List =>JList}

def remove2[A](foo: JList[A], a1:A, a2:A):Unit = {
    foo.remove(a1)
    foo.remove(a2)  //if you couldn't convert the (usually pointless) return value of remove to Unit, this wouldn't type
}

حسنًا ، يمكن تحويل أي شيء إلى وحدة (وهو غرضها). يمكنك التفكير في الوحدة كوحدة في شعرية الأنواع (الفرعية) ، مما يعني أنها عبارة عن مجموعة رائعة من كل شيء. نرى مقال ويكيبيديا.

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