I think optionals are my favorite feature. That may be due to me coming from a Java background (which also has optionals since 8, but I feel it's rather clumsy compared to Swift and other modern native languages).
By doing optional chaining you can do something like: if let name = result.person?.firstName { ... } which only evaluates firstName if person is not nil, and then stores the result in name which is immutable.
It's easier to avoid mutable code in Swift than in many other languages. For this reason I would love to start working with Swift on the backend at some point in the future.
I like extensions, being able to extend any class I want by just typing it into any file I want. This helps with iterative development and trying something out.
Speaking of iteratively, if I want to try something quick, I can also drop down to a shell and start the Swift REPL to experiment.
I like how built-in functions like zip and mapValues are available, so it in some ways has a Pythonic feel. I like the syntax of building strings by just taking a variable name and going let s = "Hi there \(name)!".
Vapor is pretty amazing. Super fast and pretty fun to work with; also a very friendly community. Ray Wenderlich’s team as well as Paul Hudson also have some great books on server-side Swift for those looking to learn this stuff.
- highly expressive pattern matching - (https://appventure.me/2015/08/20/swift-pattern-matching-in-d...)
Swift's pattern matching is especially powerful with a switch statement. I frequently bundle multiple values into a tuple and switch across them, which allows me to flatten many if-else pyramids, and makes control flow more obvious up front.
There's more than that, and Swift is definitely not without it's shortcomings, but those features have fundamentally changed how I reason about code. I frequently find myself wishing I could reach for similar tools in other languages.
I agree with that list and I’d also add value types in structs. Getting rid of all the shared state that objects and reference types add has been a big win for stability and correctness in my apps. I’m getting out of iOS development in favor of the web but I’ll miss swift.
To add to the other good answers here: I love its succinctness. The syntax itself is succinct (but still extremely readable) and the pervasive availability of functional-style methods (map/filter/reduce/etc) make it easier to keep lots of code in your head and on your screen at one time, making it much easier to understand complex code.
Not OP, but if you look at Rust, take out the borrow checker and you basically have Swift.
It's a nice combination of modern OO and functional language constructs that make it easy to write elegant abstractions.