Avatar ·

Kotlin: Void, Unit и Nothing — в чем разница и когда что использовать?

مرحبًا بالجميع! لقد بدأت مؤخرًا في تعلم Kotlin وانتقلت من Java. في Java كنت معتادًا على void للدوال التي لا تُرجع شيئًا. لكن في Kotlin أرى ثلاثة مفاهيم متشابهة: Void و Unit و Nothing. وأنا مرتبك.

على سبيل المثال، أكتب دالة تطبع تحية:

fun greet(name: String) {
    println("Hello, $name!")
}

يقول المترجم إن نوع الإرجاع هو Unit. لكن يمكنني الكتابة أيضًا:

fun greet(name: String): Unit {
    println("Hello, $name!")
}

كما رأيت في كود شخص آخر Void (بحرف كبير) و Nothing. عندما حاولت استخدام Nothing كنوع إرجاع، قال المترجم إن الدالة لن تنتهي بشكل طبيعي أبدًا.

أرجو التوضيح:

  1. ما الفرق بين Unit و Void و Nothing؟
  2. متى يجب استخدام كل منها؟