Adding Map to Range in Swift

I am trying to expand Range

with a map

similar function Array


extension Range {
    func map<T>(@noescape transform: (Element) -> T) -> [T] {
        var result = Array<T>()
        for i in self {
        return result



defined Range


struct Range<Element : ForwardIndexType> :

I thought it looked good, however when using it I get a compiler error:

let cellSubtitles: [String?] = {  // <-- Unable to infer closure type in the current context
    return {
        let week: Int = $0/7
        switch week {
        case 0:  return nil
        case 1:  return "Last Week"
        default: return "\(week) Weeks Ago"


Note that the error is for the closing closure, not the passed one map


Also, changing the second line above to

return (0...42 as Range<Int>).map {


gets rid of the error.

I don't understand this as my function map

should return [String?]

in both cases. And in general, I would suggest that 0...42

there is Range<Int>

also no broadcast.

I am using Swift 2.0.


source to share

1 answer

If you are using Swift 2.0, it is map

already defined for Range

, as it Range

matches CollectionType

, which implements map

, so there is no need to define it yourself.



All Articles