Happy to be here, thanks! 
I'm not sure what you mean by "resolve this if let", but regarding not specifying the weather in brackets you can't. This is because your getHaterStatus function requires a string to be passed in so if you don't pass it a value it doesn't know what other String to choose instead.
Sorry for not being precise with wording. I'm having problem with understanding the logic behind if let and any/specific String. Nil is being returned only for "sunny", but any other String will return String as well. This is where I'm confused. If, for example, I want user to fill any String (and I assume he/she fills anything except "sunny") and I use this if let to check if it's not nil, why do we specify the weather? In other words, is it possible to make if let similar to universal func, where XYZ in the code below is specified by the user?
if let haterStatus = getHaterStatus(weather: "XYZ") {
takeHaterAction(status: haterStatus)
}
If you mean that because you are calling getHaterStatus(weather:) with a hard-coded value of "rainy" it will never return nil , you're right, but imagine that, as a more real life example, instead of "rainy" you have a variable containing a string you got from a user of your program or from a weather library. Now you cannot assume getHaterStatus will never return nil since the user might have have said it is a "sunny" day today.
I think that's my biggest problem right now is seeing "if let" outside of a function and having some data hard-coded. Using the example from the article, I would be able to use if let without specifying a String inside its code. What I think my mind suggests is to have universal code for if let, and have the weather as a separate variable.
The other question is, having the code as in the example article, what happens if the weather is neither "sunny" (returning nil from func getHaterStatus) nor "rainy" (as specified in if let). I know I can write something like this:
var currentMoodTowardsWeather = getHaterStatus(weather: "gloomy")
and that it will return "Hate", and if I write:
var currentMoodTowardsWeather2 = getHaterStatus(weather: "sunny")
I will get nil. But then, what was the reasoning behind if let being outside of the function? I've read numerous articles on if let and I'm trying to put my thoughts in order and fit everything together.
With this in mind, to use if let inside getHaterStatus you would have to accept an optional string as the weather parameter. This could also make sense if for example the user of your code does not know the current weather or if there is no internet connection and the weather library you are using passed nil as a parameter to your function. However, you don't actually need weather to be optional though, you only need somethingElse to be optional so you might do some operation before which might fail and thus give you nil .
May I ask you to modify the example code from the article to reflect that?
If you mean what code will run in this case, it will be the one in the else block: print("No year specified for this artist!") , since the implementation of yearAlbumReleased does not check for "Pawel" and so all of the if checks inside will fail and the code will run until the return nil .
The example code is as follows:
func yearAlbumReleased(name: String) -> Int? {
if name == "Taylor Swift" { return 2006 }
if name == "Fearless" { return 2008 }
if name == "Speak Now" { return 2010 }
if name == "Red" { return 2012 }
if name == "1989" { return 2014 }
return nil
}
How should I unwrap the result using if let to check whether a value exists or not?