سكالا: لماذا يمكنني تحويل int إلى وحدة؟
سؤال
لقد بدأت مؤخرًا اللعب مع 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
}
حسنًا ، يمكن تحويل أي شيء إلى وحدة (وهو غرضها). يمكنك التفكير في الوحدة كوحدة في شعرية الأنواع (الفرعية) ، مما يعني أنها عبارة عن مجموعة رائعة من كل شيء. نرى مقال ويكيبيديا.
لا تنتمي إلى StackOverflow