# Concatenation

---

**String Interpolation vs Concatenation**

- **Interpolation** (التضمين): تكتب المتغير داخل `$` مباشرة أو `${}` داخل النص، وDart يبدل القيمة تلقائيًا.  
  ```dart
  String name = "Ali";
  print("Hello, $name"); // أسهل للقراءة، ويعالج الأنواع تلقائيًا
  ```
- **Concatenation** (الربط): تستخدم عامل `+` أو `write` عشان تلصق نصين.  
  ```dart
  print("Hello, " + name);
  ```
- الفرق: التضمين أنضف وأسرع، وما يحتاج تفكر في تحويل النوع (`int` → `String`). الربط أحيانًا مفيد لما تحط شرط قبل لمعالجة كل جزء، لكن لو تقدر استخدم `${}` يبقى أوضح.
- نصيحة: استخدم interpolation في أغلب الحالات، واحتفظ بالـ concatenation لما تكون بتبني السلسلة خطوة بخطوة داخل شرط أو حلقة.

```dart
void main() {
  String greeting = "hello";
    String greeting2 = "world";
    String fullGreeting = "$greeting, $greeting2!";
    String fullGreetingConcatenated = greeting + ", " + greeting2 + "!";
  print(fullGreetingConcatenated); // Output: hello, world!
}

```