iOS Closures in Swift First Class Functions Higher Order Functions

Inokentiy Kadilov
Inokentiy Kadilov
24,544 Points

Am I missing something? The code works in Xcode.

extension String { func transform(_ argument:(String) -> String) -> String { return argument(self) }

}

extension Character { var isVowel: Bool { let vowels: [Character] = ["a", "e", "i", "o", "u"] return vowels.contains(self) } }

func removeVowels(from value: String) -> String { var output: String = " "

for char in value.characters {
    if !(char.isVowel){
        output.append(char)
    }
}
let newString:String = output
return newString

}

removeVowels(from: "apple")

functions.swift
extension String {
    func transform(_ argument:(String) -> String) -> String {
        return argument(self)
    }

}

extension Character {
    var isVowel: Bool {
        let vowels: [Character] = ["a", "e", "i", "o", "u","A", "E", "I", "O", "U"]
        return vowels.contains(self)
    }
}

func removeVowels(from: String) -> String {
    var output: String = " "

    for char in from.characters {
        if !(char.isVowel){
            output.append(char)
        }
    }
    let string:String = output
    return from
}

1 Answer

Jeff McDivitt
Jeff McDivitt
23,959 Points

This is how I handled this one. I am sure there are multiple ways to do it

extension String{

    func transform(_ argument : (String) -> String) -> String {
        return  argument(self)
    }
}

func removeVowels(from value: String) -> String {
    var output = ""

    for char in value.characters {
        if !(char == "a" || char == "A" || char == "e" || char == "e"
            || char == "i" || char == "I" || char == "o" || char == "O"
            || char == "u" || char == "U") {
            output.append(char)
        }
    }
    return output
}