Расширения (extension) в Swift

Домашняя работа к главе 32

Задание 1

Расширьте класс Int, добавив в него свойства asDouble, asFloat и asString, возвращающие исходное целое число в преобразованном к другому типу данных виде (к Double, к Float, к String)
Пример
[Int] 12.asDouble -> [Double] 12

Правильный ответ

extension Int {
    var asDouble: Double {
        return Double(self)
    }
    var asFloat: Float {
        return Float(self)
    }
    var asString: String {
        return String(self)
    }
}

Доступ закрыт

Дополнительное 5 заданий доступны только подписчикам

Оформить доступ


3 Comments

  1. Vlados:

    extension Int {    var asFloat: Float {return Float(self)}    var asDouble: Double {return Double(self)}    var asString: String {return String(self)}} 12.asFloat //1212.asDouble //1212.asString // «12»

  2. krovevs:

    Для второго задания такой вариант выглядит интереснее, как по мне (был вариант еще короче, но предпочел 2 условия с возможностью повторного использования переменной с индексом second, нежели с 1 условием, но с сырым обращением ко второму символу.

    extension String {
    func crypt()->String {
    let strAsArr = self.split(separator: » «) //разделение строки на массив по пробелам
    var result: [String] = []
    for i in strAsArr {
    let word = String(i)
    let first = word.startIndex // индекс первого символа
    var resultWord = String(word[first].unicodeScalars[first].value) // переменная для текущего слова сразу с кодовой точкой
    if word.count > 1 {
    let second = word.index(after: first) // индекс второго символа
    if word.count > 2 {
    let last = word.index(before:word.endIndex) // индекс последнего символа
    resultWord += String(word[last])+String(word[word.index(second, offsetBy: 1)..<last])+String(word[second]) // конкатенация последний символ + подстрока после второго сивола до последнего + второй символ
    } else {
    resultWord += String(word[second]) // конкатенация второго символа
    }
    }
    result.append(resultWord)
    }
    return result.joined(separator: " ")
    }
    }

    "Я учу Swift".crypt()

  3. krovevs:

    Для 6 задания тоже как вариант:
    extension Int {
    subscript(_ a:Int)->String? {
    let word = String(self)
    guard (1…word.count).contains(a) else {
    return nil
    }
    let resultNum = word.index(word.startIndex, offsetBy: a-1)
    let result = word[resultNum]
    return String(result)
    }
    }
    345[1]

Добавить комментарий