Objective-C without C
Language Design
Lambda
Optional
Type Inference Generics
Extension
Protocol
No GC (Objective-C ARC)
Hello World
String interpolation (word)
Type Inference
let word = “Swift”
Array & Dict
Use similar syntax for Array and Dictionary
The key of dictionary is non-deterministic.
Array & Dict
Array and Dictionary are copied when assigned.
Function & Lambda
{

(params) -> return type in 

statement

}
Trailing lambda. 

ajax(param1, label:{lambda})

can be written as

ajax(param1) {lambda}
Closure
Closures works like a class, which has instance variables.
var count

{ () -> () in

return count++

}
Optional
String? = Optional<String>
You cannot assign nil to variables. Use Optional type if it could be nil.
if let unwraps the optional.
Returns true if it is not nil.
Class
Protocol
Protocol is interface
Generics
func printFullname<T: Fullname>(person: T) {
func printFullname(person: Fullname) {
Extension
You can append methods to the existing classes like Ruby Monkey patch.

Swift