Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ورقة Swift المرجعية

آخر تحديث

Hello World والأساسيات

Swift لا تحتاج إلى قالب نمطي على المستوى الأعلى - سطر واحد يعمل.

العمليةالصياغة
طباعة سطرprint("Hello, World!")
الطباعة دون سطر جديدprint("Hi", terminator: "")
استيفاء السلاسل النصيةprint("Hi \(name)")
تعليق// this is a comment
تعليق متعدد الأسطر/* ... */
استيراد وحدةimport Foundation
تشغيل ملفswift run أو swift main.swift

المتغيرات (let / var) والأنواع

استخدم let للثوابت و var للقيم القابلة للتغيير؛ والأنواع تُستنتَج عادةً.

العمليةالصياغة
ثابتlet age = 30
متغيرvar count = 0
نوع صريحlet name: String = "Ada"
الأنواع الأساسيةInt, Double, String, Bool, Character
تحويل النوعDouble(i), String(n), Int("42")
صف (Tuple)let pair = (1, "a")
اسم نوع مستعارtypealias ID = Int
فحص النوعvalue is String, value as? String

الاختياريات (Optionals)

الاختياريات تنمذج الغياب المحتمل لقيمة؛ فكّ تغليفها قبل الاستخدام.

العمليةالصياغة
تعريف اختياريvar name: String? = nil
الربط الاختياريif let n = name { ... }
فكّ التغليف بـ guardguard let n = name else { return }
دمج nulllet n = name ?? "default"
التسلسل الاختياريuser?.address?.city
فكّ التغليف القسري (غير آمن)name!
مفكوك التغليف ضمنيًاvar name: String!
Map على اختياريname.map { $0.count }

السلاسل النصية

السلاسل النصية أنواع قيمة بدعم Unicode كامل.

العمليةالصياغة
الطولs.count
الأحرف الكبيرة / الصغيرةs.uppercased(), s.lowercased()
الدمج"foo" + "bar"
الاستيفاء"Total: \(price)"
الاحتواءs.contains("ell")
له بادئة / لاحقةs.hasPrefix("he")
التقسيمs.split(separator: ",")
الاستبدالs.replacingOccurrences(of: "a", with: "b")
سلسلة نصية متعددة الأسطر""" ... """

المجموعات (Array و Dictionary و Set)

ثلاثة أنواع مجموعات أساسية، جميعها أنواع قيمة.

العمليةالصياغة
مصفوفة حرفيةvar nums = [1, 2, 3]
الإلحاقnums.append(4)
الوصول / العدّnums[0], nums.count
Map / filternums.map { $0 * 2 }, nums.filter { $0 > 1 }
قاموس حرفيvar ages = ["Ada": 30]
الوصول إلى قاموسages["Ada"] يُرجع اختياريًا
مجموعة حرفيةvar ids: Set = [1, 2, 3]
الإدراج في مجموعةids.insert(4)
التكرار على قاموسfor (k, v) in ages { ... }

التحكم في التدفق

الشروط لا تحتاج إلى أقواس؛ ويجب أن تكون switch شاملة.

العمليةالصياغة
If / elseif x > 0 { ... } else { ... }
الشرطي الثلاثيlet r = x > 0 ? "pos" : "neg"
Switchswitch n { case 1: ...; default: ... }
Switch مع نطاقcase 1...5: ...
حلقة for-infor i in 0..<10 { ... }
for-in على مصفوفةfor item in items { ... }
حلقة whilewhile x < 100 { ... }
Repeat-whilerepeat { ... } while x < 100
Break / continuebreak, continue

الدوال والإغلاقات

الدوال لها معاملات معنونة؛ والإغلاقات كتل كود مكتفية بذاتها.

العمليةالصياغة
تعريف دالةfunc add(a: Int, b: Int) -> Int { a + b }
تسمية خارجيةfunc greet(to name: String) { ... }
معامل افتراضيfunc greet(name: String = "World") { ... }
معامل متغير الوسائطfunc sum(_ nums: Int...) -> Int { ... }
إرجاعات متعددة (صف)func bounds() -> (min: Int, max: Int) { ... }
تعبير إغلاقlet f = { (x: Int) -> Int in x * x }
إغلاق لاحقnums.map { $0 * 2 }
وسائط مختصرة{ $0 + $1 }

البُنى مقابل الأصناف

البُنى أنواع قيمة (تُنسخ)؛ والأصناف أنواع مرجع (مشتركة).

العمليةالصياغة
تعريف بنيةstruct Point { var x: Int; var y: Int }
تعريف صنفclass Person { var name: String }
مهيّئ الصنفinit(name: String) { self.name = name }
إنشاء نسخةlet p = Point(x: 1, y: 2)
دالة بنية معدِّلة (mutating)mutating func move() { x += 1 }
دالة صنفfunc greet() { ... }
الوراثة (للأصناف فقط)class Student: Person { ... }
خاصية محسوبةvar area: Int { width * height }
عضو ساكنstatic let shared = Manager()

التعدادات (Enums)

التعدادات تجمع القيم المترابطة ويمكنها حمل بيانات مرتبطة.

العمليةالصياغة
تعريف تعدادenum Direction { case north, south }
استخدام حالةlet d = Direction.north
Switch على تعدادswitch d { case .north: ... }
القيم الخامenum Status: Int { case ok = 200 }
الوصول إلى القيمة الخامStatus.ok.rawValue
التهيئة من قيمة خامStatus(rawValue: 200)
القيم المرتبطةcase result(Int, String)
دوال على التعداداتfunc label() -> String { ... }

صياغة Swift التي تستخدمها أكثر من غيرها، على صفحة واحدة. ورقة Swift المرجعية هذه هي مرجع سريع للّغة الأساسية - الثوابت والمتغيرات، والاختياريات، والسلاسل النصية، والمجموعات، والتحكم في التدفق، والدوال والإغلاقات، بالإضافة إلى البُنى والأصناف والتعدادات التي تبني بها تطبيقات iOS و macOS.

كل ما هنا هو Swift قياسية تُترجم بسلسلة الأدوات الرسمية. انسخ ما تحتاجه، أو جرّب كل مقطع برمجي مباشرة في playground الخاص بـ Swift - دون الحاجة إلى Xcode.

الأسئلة الشائعة حول ورقة Swift المرجعية

هل ورقة Swift المرجعية هذه مجانية؟
نعم. ورقة Swift المرجعية هذه مجانية تمامًا، دون الحاجة إلى التسجيل. أضِفها إلى المفضلة وارجع إليها متى احتجت إلى البحث عن نمط اختياري أو صياغة إغلاق أو دالة مجموعة.
كيف أفكّ تغليف اختياري في Swift؟
قد يحمل الاختياري قيمة أو nil، لذا تفكّ تغليفه قبل الاستخدام. والطرق الآمنة هي الربط الاختياري (if let n = name { ... })، و guard let في أعلى الدالة، وعامل دمج null (name ?? "default")، والتسلسل الاختياري (user?.name). أمّا فكّ التغليف القسري بـ name! فيعمل لكنه يتعطّل إذا كانت القيمة nil، لذا لا تلجأ إليه إلا عندما تكون متيقّنًا.
ما الفرق بين البنية والصنف في Swift؟
الـ struct نوع قيمة: إسنادها أو تمريرها يصنع نسخة، لذا لا تؤثر التغييرات في الأصل. أمّا الـ class فنوع مرجع: تتشارك النسخ النسخة (instance) نفسها، والأصناف وحدها تدعم الوراثة. وتوجيه Apple هو تفضيل البُنى افتراضيًا واستخدام صنف عندما تحتاج إلى حالة مشتركة قابلة للتغيير أو إلى الوراثة.
هل يمكنني التدرّب على Swift عبر الإنترنت؟
نعم. افتح playground الخاص بـ Swift لتشغيل أيّ مقطع برمجي من هذه الورقة المرجعية في متصفحك - دون الحاجة إلى تثبيت Xcode. وعندما ترغب في تعلّم منظّم، تأخذك دورة Swift التفاعلية المجانية من Coddy من الاختياريات والمجموعات إلى البُنى والأصناف والتعدادات خطوة بخطوة.
هل هذه الورقة المرجعية مناسبة للمبتدئين؟
نعم. إنها مرتّبة من المواضيع الأكثر شيوعًا (المتغيرات والاختياريات والتحكم في التدفق) وصولًا إلى المتقدمة (الإغلاقات والبُنى مقابل الأصناف والتعدادات)، بحيث يمكنك استخدام الأقسام العلوية من اليوم الأول والتدرّج إلى البقية.
Coddy programming languages illustration

تعلّم Swift مع Coddy

ابدأ الآن