“I have been impressed with the urgency of doing. Knowing is not enough; we must apply. Being willing is not enough; we must do.”
Update June 7, 2018 – Hall of Shame
This article is a Hall of Shamer™ for offering little to no value from the moment it was written.
-
Type inference with sane interpolation (which takes expressions yay)! Make for less nasty NSLog.
-
Dictionary & Array literal syntax. Legit. More akin to PHP than JS by syntax.
-
let & var seem to hold for reference semantics not value semantics. Think Scala’s val & var.
-
TODO: Does for in take advantage of NSFastIteration protocol? In which case, users could provide iterables?
-
Expression support for control flow! Pattern matching!
-
Ranges. Appear to be lazily computed as expected.
-
Nice overloading of
...to represent variadic functions. -
First class functions!
-
The closure block syntax is a little odd overloading the in keyword to separate the interface from the implementation.
-
Single line statement closures are implicit return types
-
Classes look freakishly like ES6/Typescript classes.
-
Explicit override for subclasses.
-
Weird implicit “newValue” in setters. You can explicitly set the name if you like though.
-
willSet/didSet I imagine this was done to keep binding logic out of getters/setters.
-
The existential
?operator is just great, reminds me of coffee script. -
Named parameters only exists in methods? Seems like a choice for Objective-C interoperability, feels odd that functions don’t have the same restriction.
-
structs == value classes
-
enums + Pattern Matching reminds me a lot of Scala’s case classes.
-
extensions lots like C# so far as I can tell, I’m guessing this will be used to replace Objective-C Categories. Extending built-ins FTW!
-
Protocols now restrict consumers to consuming only methods in the protocol. Awesome!