iOS Closures in Swift First Class Functions Higher Order Functions

Remove Vowels from the String

I don't get it why the compiler stills says 'Make sure removeVowels' function accepts String and return a String.

My method signature is correct.

functions.swift
// Enter your code below
extension String {
  func transform(_ function: (String) -> String) -> String {
    return function(self)
  }

  func removeVowels(from value: String) -> String {
    let vowels: [Character] = ["a", "e", "i", "o", "u"]
    var removeVowels: String = ""

    for character in value.characters {
        if vowels.contains(character) {
            removeVowels.append(character)
        }
    }

    return removeVowels
  }
}

2 Answers

Jeff McDivitt
Jeff McDivitt
23,959 Points

This is how I completed this task; although yours looks like it will do the same thing

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
}

Jeff McDivitt Thank you so much. I thought the instruction wants me to create a function inside the extension of the String.