BLACK FRIDAY SALE: Save 50% on all my Swift books and bundles! >>

SOLVED: Day 40: "self" question

Forums > 100 Days of SwiftUI

Thus begins the definition of an extension on Bundle:

extension Bundle { func decode(_ file: String) -> [String: Astronaut] { guard let url = self.url(forResource: file, withExtension: nil) else { fatalError("Failed to locate (file) in bundle.") }

My only question is, what exactly is the "self" on line 3 doing for us? Usually I think of "self" as necessary to clear up confusion about which variable we're referring to (within the closure or outside the closure), but I don't see how there are two versions of anything here.


Bundle has a method url(forResource:withExtension:). You are extending Bundle, so to refer to that instance you call it as self.url(forResource:withExtension:).




Hacking with Swift is sponsored by Guardsquare

SPONSORED AppSweep by Guardsquare helps developers automate the mobile app security testing process with fast, free scans. By using AppSweep’s actionable recommendations, developers can improve the security posture of their apps in accordance with security standards like OWASP.

Learn more

Sponsor Hacking with Swift and reach the world's largest Swift community!

Reply to this topic…

You need to create an account or log in to reply.

All interactions here are governed by our code of conduct.

Unknown user

You are not logged in

Log in or create account

Link copied to your pasteboard.