Menu
Coddy logo textTech

Swift Cheat Sheet: דף עזר מהיר

עודכן לאחרונה

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")
Tuplelet pair = (1, "a")
כינוי לטיפוס (typealias)typealias ID = Int
בדיקת טיפוסvalue is String, value as? String

Optionals

Optionals מייצגים את האפשרות שערך חסר; פרקו אותם לפני השימוש.

פעולהתחביר
הגדרת optionalvar name: String? = nil
Optional bindingif let n = name { ... }
פריקה עם guardguard let n = name else { return }
Nil-coalescinglet n = name ?? "default"
Optional chaininguser?.address?.city
פריקה בכוח (לא בטוח)name!
נפרק באופן מרומזvar name: String!
map על optionalname.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"] מחזיר optional
ליטרל של Setvar ids: Set = [1, 2, 3]
הוספה ל-Setids.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

פונקציות ו-closures

לפונקציות יש פרמטרים עם תוויות; closures הם בלוקים עצמאיים של קוד.

פעולהתחביר
הגדרת פונקציהfunc add(a: Int, b: Int) -> Int { a + b }
תווית חיצוניתfunc greet(to name: String) { ... }
פרמטר ברירת מחדלfunc greet(name: String = "World") { ... }
פרמטר משתנה (variadic)func sum(_ nums: Int...) -> Int { ... }
כמה ערכים מוחזרים (tuple)func bounds() -> (min: Int, max: Int) { ... }
ביטוי closurelet f = { (x: Int) -> Int in x * x }
Trailing closurenums.map { $0 * 2 }
ארגומנטים מקוצרים{ $0 + $1 }

Structs לעומת מחלקות

Structs הם טיפוסי ערך (מועתקים); מחלקות הן טיפוסי הפניה (משותפות).

פעולהתחביר
הגדרת structstruct Point { var x: Int; var y: Int }
הגדרת מחלקהclass Person { var name: String }
אתחול מחלקה (init)init(name: String) { self.name = name }
יצירת מופעlet p = Point(x: 1, y: 2)
מתודת struct משנה (mutating)mutating func move() { x += 1 }
מתודה של מחלקהfunc greet() { ... }
ירושה (מחלקות בלבד)class Student: Person { ... }
מאפיין מחושבvar area: Int { width * height }
חבר סטטיstatic let shared = Manager()

Enums

Enums מקבצים ערכים קשורים ויכולים לשאת נתונים משויכים.

פעולהתחביר
הגדרת enumenum Direction { case north, south }
שימוש ב-caselet d = Direction.north
switch על enumswitch d { case .north: ... }
ערכים גולמיים (raw values)enum Status: Int { case ok = 200 }
גישה לערך הגולמיStatus.ok.rawValue
אתחול מתוך ערך גולמיStatus(rawValue: 200)
ערכים משויכיםcase result(Int, String)
מתודות על enumsfunc label() -> String { ... }

התחביר של Swift שאתם צריכים הכי הרבה, בעמוד אחד. ה-Swift cheat sheet הזה הוא דף עזר מהיר לליבת השפה: קבועים ומשתנים, optionals, מחרוזות, אוספים, בקרת זרימה, פונקציות ו-closures, וגם ה-structs, המחלקות וה-enums שאיתם בונים אפליקציות ל-iOS ול-macOS.

כל מה שכאן הוא Swift סטנדרטי שמתקמפל עם ה-toolchain הרשמי. העתיקו את מה שאתם צריכים, או נסו כל קטע קוד בזמן אמת בעורך האונליין של Swift, בלי Xcode.

שאלות נפוצות על ה-Swift cheat sheet

האם ה-Swift cheat sheet הזה חינמי?
כן. ה-Swift cheat sheet הזה חינמי לגמרי, בלי צורך בהרשמה. שמרו אותו במועדפים וחזרו אליו בכל פעם שתצטרכו לבדוק תבנית של optional, תחביר של closure או מתודה של אוסף.
איך פורקים optional ב-Swift?
optional יכול להכיל ערך או nil, ולכן פורקים אותו לפני השימוש. הדרכים הבטוחות הן optional binding (if let n = name { ... }), guard let בתחילת פונקציה, אופרטור ה-nil-coalescing (name ?? "default") ו-optional chaining (user?.name). פריקה בכוח עם name! עובדת, אבל גורמת לקריסה אם הערך הוא nil, אז השתמשו בה רק כשאתם בטוחים.
מה ההבדל בין struct למחלקה ב-Swift?
struct הוא טיפוס ערך: השמה או העברה שלו יוצרת עותק, כך ששינויים לא משפיעים על המקור. class הוא טיפוס הפניה: עותקים חולקים את אותו מופע, ורק מחלקות תומכות בירושה. ההמלצה של Apple היא להעדיף structs כברירת מחדל ולהשתמש במחלקה כשצריך מצב משותף שניתן לשינוי או ירושה.
אפשר לתרגל Swift אונליין?
כן. פתחו את עורך האונליין של Swift כדי להריץ כל קטע קוד מדף העזר הזה בדפדפן, בלי להתקין Xcode. כשתרצו מסגרת מסודרת, קורס ה-Swift האינטראקטיבי והחינמי של Coddy ייקח אתכם צעד אחר צעד מ-optionals ואוספים ועד structs, מחלקות ו-enums.
האם דף העזר הזה מתאים למתחילים?
כן. הוא מסודר מהנושאים הנפוצים ביותר (משתנים, optionals, בקרת זרימה) ועד המתקדמים (closures, structs לעומת מחלקות, enums), כך שאפשר להשתמש בחלקים העליונים כבר מהיום הראשון ולהתקדם לשאר בהמשך.
איור של שפות התכנות ב-Coddy

ללמוד Swift עם Coddy

להתחיל