أنواع القيم وعدم قابلية التغيير
اكتشف كيف تمنع let تغيير أنواع القيم.
أنواع القيم وعدم قابلية التغيير درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
Structs أنواع قيمية
في Swift، يُعد struct وenum من الأنواع القيمية. يؤدي إسناد أحدهما إلى متغير جديد إلى نسخه.
struct Point { var x: Int; var y: Int }
var a = Point(x: 1, y: 2)
var copy = a
copy.x = 99
print(a.x, copy.x)let يثبّت القيمة بأكملها
يؤدي تعريف struct باستخدام let إلى جعل القيمة بأكملها غير قابلة للتغيير، بما في ذلك جميع خصائصها.
struct Counter { var value: Int }
let c = Counter(value: 0)
// c.value = 5 // compile error
print(c.value)var يسمح بالتغيير
استخدموا var عندما تنوون تغيير خصائص struct بعد إنشائها.
struct Counter { var value: Int }
var c = Counter(value: 0)
c.value = 5
print(c.value)النسخ عند الإسناد
يحتفظ كل متغير بنسخته المستقلة. ولا يؤثر تغيير أحدهما في الآخر مطلقًا.
struct Box { var label: String }
var first = Box(label: "A")
var second = first
second.label = "B"
print(first.label, second.label)دلالات القيم في الدوال
يؤدي تمرير struct إلى دالة إلى تمرير نسخة منه. ولا تتغير النسخة الأصلية خارج الدالة.
struct Score { var points: Int }
func bump(_ s: Score) {
var local = s
local.points += 10
}
var s = Score(points: 0)
bump(s)
print(s.points)الخصائص غير القابلة للتغيير
لا يمكن تغيير خاصية معلنة باستخدام let داخل struct مطلقًا، حتى في مثيل معلن باستخدام var.
struct User { let id: Int; var name: String }
var u = User(id: 1, name: "Ada")
u.name = "Bob"
// u.id = 2 // compile error
print(u.id, u.name)المصفوفات أنواع قيمية أيضًا
إن Array وDictionary وSet في Swift عبارة عن structs، لذا تُنسخ عند الإسناد.
var a = [1, 2, 3]
var b = a
b.append(4)
print(a)
print(b)السلاسل النصية أنواع قيمية
إن String أيضًا نوع قيمي. ويؤدي تغيير نسخة إلى إبقاء الأصل من دون تغيير.
var s1 = "hi"
var s2 = s1
s2 += " there"
print(s1)
print(s2)لماذا تفيد الأنواع القيمية
تمنع دلالات القيم أخطاء الحالة المشتركة غير المقصودة. ويمكنكم تحليل قيمة محليًا من دون القلق بشأن من يحتفظ بمرجع إليها أيضًا.
struct Config { var retries: Int }
let defaultConfig = Config(retries: 3)
var custom = defaultConfig
custom.retries = 5
print(defaultConfig.retries, custom.retries)عدم القابلية للتغيير والأمان
يجعل تعليم القيم باستخدام let حيثما أمكن الشيفرة أكثر أمانًا ووضوحًا. ويفرض المترجم عدم تغييرها مطلقًا.
let limit = 100
let name = "stable"
print(limit, name)يفشل إعادة إسناد متغير let
لا يمكنكم إعادة إسناد ربط let أو تغيير القيمة التي يحتفظ بها.
let pi = 3.14
// pi = 3.15 // compile error
print(pi)اختبار سريع
اختبروا سلوك الأنواع القيمية.
مراجعة
تُعد structs وenums أنواعًا قيمية، ولذلك تُنسخ عند الإسناد وعند تمريرها إلى الدوال. ويثبّت ربط let القيمة بأكملها، كما لا يمكن تغيير خاصية let مطلقًا. وهذا يمنحكم حالة متوقعة ومعزولة.
struct P { var n: Int }
var a = P(n: 1)
var b = a
b.n = 9
print(a.n, b.n)الأسئلة الشائعة
هل درس «أنواع القيم وعدم قابلية التغيير» مجاني؟
نعم — نص درس «أنواع القيم وعدم قابلية التغيير» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «أنواع القيم وعدم قابلية التغيير»؟
اكتشف كيف تمنع let تغيير أنواع القيم. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أنواع القيم وعدم قابلية التغيير»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنواع القيم وعدم قابلية التغيير
- الكلمة المفتاحية mutating
- mutating وإعادة إسناد self
- البدائل غير المعدِّلة