Swift marathon: Homework
June 17, 2022
Homework. SWIFT - 10. Функции
На этот раз я изучаю как работают функции (func) в языке программирования Swift. Посмотрим, что из этого выйдет.
1. Создайте пару функций с короткими именами, которые возвращают строку с классным символом или символами. Например heart() возвращает сердце и т.п. Вызовите все эти функции внутри принта для вывода строки этих символов путем конкатенации.
func earthGlobe() -> String {
return "\u{1F30F}"
}
func volcano() -> String {
return "\u{1F30B}"
}
func statue() -> String {
return "\u{1F5FD}"
}
func rock() -> String {
return "\u{1FAA8}"
}
func wood() -> String {
return "\u{1FAB5}"
}
print(earthGlobe() + volcano() + statue() + rock() + wood())2. Снова шахматные клетки. Реализовать функцию, которая принимает букву и символ и возвращает строку “белая” или “черная”. Строку потом распечатайте в консоль
let x:Character = "D"
let yIdx = 2
let chessCells = "ABCDEFGHIJ"
if let index = chessCells.index(of: x) {
let xIdx = index.encodedOffset
print((xIdx + yIdx) % 2 > 0 ? "Black" : "White")
} else {
print("Error")
}- Задаем константу
xтипа Character. - Задаем константу
yIdnтипаInt. - Задаем константу
chessCellsсо всеми буквами по x координате. - Если константа index равна
chessCells.index(of: x) - Константа
xIdxравнаindex.encodedOffset - выводим в консоль
((xIdx + yIdx) % 2 > 0 ? "Black" : "White") - иначе выводим в консоль
"Error"
.index(of: x) - проверяет присутствие и устанавливает индекс символу "D" в коллекции символов "ABCDEFGHIJ"
let x:Character = "D"
let yIdx = 2
func whatColor(_ x: Character,_ yIdx: Int) -> String {
let chessCells = "ABCDEFGHIJ"
if let index = chessCells.index(of: x) {
let xIdx = index.encodedOffset
return (xIdx + yIdx) % 2 > 0 ? "Black" : "White"
} else {
return "Error"
}
}
print("\(x)\(yIdx): ", whatColor(x, yIdx))
3. Создайте функцию, которая принимает массив, а возвращает массив в обратном порядке. Можете создать еще одну, которая принимает последовательность и возвращает массив в обратном порядке. Чтобы не дублировать код, сделайте так, чтобы функция с последовательностью вызывала первую.
// 1
let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
func revArr(with array: [Int]) -> [Int] {
return array.reversed()
}
print("Before reverse: \(array) \nAfter reverse: ",revArr(with: array))
// 2
func revSeq(sequence: Int...) -> [Int] {
return revArr(with: sequence)
}
print("Reverse sequence:", revSeq(sequence: 10, 20, 30, 40, 50))
В первой функции мы получаем массив из константы array, а во второй мы задаем константу/переменную прямиком в функции, а значение во время вызова функции.4. Разберитесь с inout самостоятельно и выполните задание номер 3 так, чтобы функция не возвращала перевернутый массив, но меняла элементы в существующем. Что будет если убрать inout?
func revArr(_ array: inout [Int]) {
array = array.reversed()
}
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
revArr(&array)
print("reverse: \(array)")
//reverse: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]5. Создайте функцию, которая принимает строку, убирает из нее все знаки препинания, делает все гласные большими буквами, согласные маленькими, а цифры меняет на соответствующие слова (9 -> nine и т.д.)
func changedText(text: inout String) {
var resultText = ""
let digitDictionary = [0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"]
for character in text {
let lowerCaseCharacter = String(character).lowercased()
switch lowerCaseCharacter {
case "a", "e", "i", "o", "u", "y":
resultText += lowerCaseCharacter.uppercased()
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z":
resultText += lowerCaseCharacter
case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9":
if let word = digitDictionary[Int(lowerCaseCharacter)!] {
resultText += word
}
default: resultText += " "
}
text = resultText
}
}
var text = "Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. and the open-source community. First released in 2014, Swift was developed as a replacement for Apple's earlier programming language Objective-C, as Objective-C had been largely unchanged since the early 1980s and lacked modern language features. Swift works with Apple's Cocoa and Cocoa Touch frameworks, and a key aspect of Swift's design was the ability to interoperate with the huge body of existing Objective-C code developed for Apple products over the previous decades. It was built with the open source LLVM compiler framework and has been included in Xcode since version 6, released in 2014."
changedText(text: &text)
print("Text after changed: \n", text)
/* Text after changed:
swIft Is A gEnErAl pUrpOsE mUltI pArAdIgm cOmpIlEd prOgrAmmIng lAngUAgE dEvElOpEd bY ApplE Inc And thE OpEn sOUrcE cOmmUnItY fIrst rElEAsEd In TwoZeroOneFour swIft wAs dEvElOpEd As A rEplAcEmEnt fOr ApplE s EArlIEr prOgrAmmIng lAngUAgE ObjEctIvE c As ObjEctIvE c hAd bEEn lArgElY UnchAngEd sIncE thE EArlY OneNineEightZeros And lAckEd mOdErn lAngUAgE fEAtUrEs swIft wOrks wIth ApplE s cOcOA And cOcOA tOUch frAmEwOrks And A kEY AspEct Of swIft s dEsIgn wAs thE AbIlItY tO IntErOpErAtE wIth thE hUgE bOdY Of ExIstIng ObjEctIvE c cOdE dEvElOpEd fOr ApplE prOdUcts OvEr thE prEvIOUs dEcAdEs It wAs bUIlt wIth thE OpEn sOUrcE llvm cOmpIlEr frAmEwOrk And hAs bEEn InclUdEd In xcOdE sIncE vErsIOn Six rElEAsEd In TwoZeroOneFour
*/