Kurzusok
/
Swift
Swift
/
Feladatok
/
Cal egyedi táblaboltja
Cal egyedi táblaboltja

Cal egyedi táblaboltja

Tanulófeladat

Bevezetés

A string szöveges adatot képvisel. A Swiftben a String Character értékek rendezett gyűjteménye, ahol minden karakter egy Unicode-karaktert képvisel.

Stringet string literál segítségével hozol létre; a string literál olyan karaktersorozat, amelyet kettős idézőjelek (") zárnak közre. Többsoros stringekhez három kettős idézőjelet (""") használj:

let hello: String = "Hello, World!"

let poem: String = """
Roses are red,
Violets are blue.
Sugar is sweet,
And so are you.
"""

A Swift stringjei zökkenőmentesen kapcsolódnak a Foundation keretrendszer NSString osztályához, és hozzáférést biztosítanak a szövegfeldolgozás széles körű lehetőségeihez.

Karakterek

A Character egyetlen kiterjesztett grafémafürtöt képvisel, azaz egy ember által olvasható karaktert, amely egy vagy több Unicode skalárértékből áll. A Unicode skalárérték egy 21 bites kódpont a U+0000 és U+D7FF közötti zárt tartományban, illetve a U+E000 és U+10FFFF közötti zárt tartományban.

let aChar: Character = "A"

Típuskövetkeztetés

Amikor string literált írsz, a Swift automatikusan String-ként következteti ki a típusát. Ahhoz, hogy egyetlen karaktert Character-ként tárolj, explicit típusannotációt kell megadnod:

let aString = "A"        // Inferred as String
let aChar: Character = "A" // Explicitly typed as Character
print(type(of: aString)) // Prints String
print(type(of: aChar))   // Prints Character

// The following code will not compile:
let badChar: Character = "Too many characters"
// Error: Cannot convert value of type 'String' to specified type 'Character'

Összefűzés

A stringeket az összeadás operátorral (+) fűzheted össze:

print("honey" + "comb")
// Prints "honeycomb"

Egy Character-t közvetlenül nem fűzhetsz String-hez a + operátorral anélkül, hogy előbb stringgé alakítanád a karaktert. A append(_:) metódussal azonban közvetlenül egy módosítható stringhez fűzhetsz egy stringet vagy egy karaktert:

var greeting = "Hello"
let world = ", world"
let period: Character = "."

greeting.append(world)
print(greeting) // Prints "Hello, world"

greeting.append(period)
print(greeting) // Prints "Hello, world."

String interpoláció

A string interpoláció segítségével úgy hozhatsz létre stringet, hogy konstansokat, változókat, literálokat és kifejezéseket ágyazol be string literálokba. Minden kifejezést zárójelbe teszel, amelyet egy visszaperjel előz meg (\( ... )):

let radius = 5.0
let circle = "The area of a circle with radius \(radius) is \(Double.pi * radius * radius)"
print(circle) // Prints "The area of a circle with radius 5.0 is 78.53981633974483"

A stringek és a karakterek tulajdonságai

A stringeknek és a karaktereknek több tulajdonságuk is van, amelyekkel megvizsgálhatod a tartalmukat.

A stringek tulajdonságai

Íme néhány a leggyakoribb stringtulajdonságok közül:

Tulajdonság Leírás Példa
isEmpty true-t ad vissza, ha a stringben nincsenek karakterek "Hello".isEmpty értéke false
count A stringben lévő karakterek számát adja vissza "Hello".count értéke 5

A tulajdonságok teljes listájához nézd meg az Apple String dokumentációját.

A karakterek tulajdonságai

Íme néhány a leggyakoribb karaktertulajdonságok közül:

Tulajdonság Leírás Példa
isLowercase true-t ad vissza, ha a karakter kisbetűs "a".isLowercase értéke true
isUppercase true-t ad vissza, ha a karakter nagybetűs "A".isUppercase értéke true
isNumber true-t ad vissza, ha a karakter számjegy "1".isNumber értéke true
isWhitespace true-t ad vissza, ha a karakter whitespace " ".isWhitespace értéke true

A tulajdonságok teljes listájához nézd meg az Apple Character dokumentációját.

Típuskonverzió

Más típusokat a String(_:) kezdőértékkel alakíthatsz stringgé, amely támogatja az olyan beépített típusokat, mint az Int, a Double és a Character:

let charX: Character = "x"
print(String(charX))     // Prints "x"
print(String(110))       // Prints "110"
print(String(Double.pi)) // Prints "3.141592653589793"

Speciális karakterek

A Swift string literáljai több escape szekvenciát is támogatnak a speciális karakterekhez:

Szekvencia Leírás
\0 Null karakter
\\ Visszaperjel
\t Vízszintes tabulátor
\n Soremelés (újsor)
\r Kocsivissza
\' Egyszeres idézőjel
\" Kettős idézőjel
\u{n} Tetszőleges Unicode skalár (hexadecimális)
let quote: String = "\"Hello\", he said."
print(quote) // Prints "Hello", he said.

let unicode: Character = "\u{1F496}"
print(unicode) // Prints 💖

Utasítások

Ebben a feladatban olyan kódot írsz, amely segít egy táblákat gyártó cégnek egyedi üzeneteket készíteni a tábláira.

1. Hozz létre egy sor hasznos stringet

Definiáld a következő konstans stringeket, amelyeket a táblák létrehozásához fogsz használni:

  • birthday: Ez a "Birthday" értéket tárolja
  • valentine: Ez a "Valentine's Day" értéket tárolja
  • anniversary: Ez a "Anniversary" stringet tárolja

2. Hozz létre egy sor hasznos karaktert

Definiáld a következő konstans karaktereket, amelyeket a táblák létrehozásához fogsz használni:

  • space: Ez a " " értéket tárolja (egyetlen szóköz)
  • exclamation: Ez a "!" értéket tárolja

3. Fűzd össze a kifejezéseket üzenetekké

Valósítsd meg a buildSign(for:name:) függvényt, amely megkapja a for argumentumot, amelyben az első részfeladatban definiált három string egyike van, valamint a name argumentumot, amely egy string, és annak a személynek a nevét tartalmazza, akinek a tábla szól. A tábla üzenetét összefűzéssel építsd fel, és ne felejtsd el újra felhasználni a már definiált konstansokat. A függvény adja vissza a tábla üzenetét stringként.

buildSign(for: birthday, name: "Otto")
// returns "Happy Birthday Otto!"

buildSign(for: anniversary, name: "Valentina")
// returns "Happy Anniversary Valentina!"

4. Készíts ballagási táblát

Valósítsd meg a graduationFor(name:year:) függvényt, amely megkapja a name argumentumot, amely egy string, és annak a személynek a nevét tartalmazza, akinek a tábla szól, valamint a year argumentumot, amely egy egész szám, és a ballagás évét tartalmazza. A tábla üzenetét template stringekkel építsd fel. A függvény adja vissza a tábla üzenetét stringként.

graduationFor(name: "Padma", year: 2023)
// returns "Congratulations Padma!\nClass of 2023"

5. Számítsd ki egy tábla költségét

Valósítsd meg a costOf(sign:) függvényt, amely megkapja a sign argumentumot, amely egy string, és a tábla üzenetét tartalmazza. A tábla alapára 20 a megadott pénznemben. Ezenfelül minden betű 2-be kerül (a szóközöket is beleszámítjuk a számításba). A függvény adja vissza a tábla költségét egész számként.

costOf(sign: "Happy Birthday Grandma!")
// returns 66
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Swift Exercism

Készen állsz elkezdeni a(z) Cal egyedi táblaboltja feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Swift nyelvet 35 fogalom116 feladat segítségével, valódi emberi mentorálással, mindez ingyen.