# Swift TIL 5

I'm going to file this one under "it makes perfect sense, but I don't think it aids in making the code readable" -- something which I'm finding is a bit of a theme with Swift.

In Swift `self` gets used and gets used in a way you'd expect from many other languages. So far so good. But, it seems, `Self` is also a thing too, and it's different from `self`. Whereas `self` is the current instance, `Self` is the current type. So consider this:

```swift
class Greeting {

    class func message() -> String {
        "Ayup!"
    }

    func message() -> String {
        "Well hello there"
    }

    func emit() {
        print( Self.message() )
        print( self.message() )
    }
}

Greeting().emit()
```

When run, the output is:

```
Ayup!
Well hello there
```

It makes sense that that's the case. I actually really like the ability to use `Self` rather than having to use `Greeting`, but damn that's really setting things up for either mistyping or misreading code. You're going to want to hope that your development environment makes it super obvious what's a value and what's a type when it comes to using font choices.
