ماذا يعني العامل `::` في Kotlin؟ شرح مع أمثلة
مرحباً بالجميع! لقد بدأت للتو في تعلم Kotlin لتطوير Android ووجدت صياغة غريبة بنقطتين رأسيتين `::`. أراها في كل مكان: في lambdas، عند العمل مع reflection، وفي Jetpack Compose.
على سبيل المثال، رأيت هذا الكود:
```kotlin
val onClick: (View) -> Unit = ::handleClick
```
أو هذا:
```kotlin
class MyFragment : Fragment() {
private val binding by viewModels()
// ...
val items = listOf("A", "B", "C")
val filtered = items.filter(String::isNotEmpty)
}
```
وأيضاً في Compose:
```kotlin
Button(onClick = ::onButtonClick) { Text("Click") }
```
أفهم أن هذا مرتبط بطريقة ما بمراجع الدوال أو الخصائص، لكنني لا أستطيع فهم الفرق بين `::handleClick` ومجرد `{ handleClick(it) }`. لماذا نحتاج هذا العامل؟ متى نستخدمه، ومتى لا؟