iOS Closures in Swift First Class Functions Higher Order Functions

can anyone help I am stuck with intermediate swift - closures - functions Challenge 1 of 3

Challenge Task 1 of 3

In an extension to the String type, declare a function named transform. The function should accept as an argument another function of type (String) -> String. For this argument, let's omit the external label. The transform function should also return a String.

In the body of the method, return the result of applying the function argument to self.

I ended up with this (but its wrong):

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

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

2 Answers

It looks like the only part you are missing is the let's omit the external label.

In Swift you can omit labels by adding a _ before your argument, so:

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

This allows you to not need to specify the label name when calling the method: transform("someString") instead of transform(argument: "someString")

Thanks for the help Joe