Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
func xyz() throws {
let f = fopen("x.txt", "r")
defer { fclose(f) }
try foo(f) // f is closed if an error is propagated.
let f2 = fopen("y.txt", "r")
defer { fclose(f2) }
try bar(f, f2) // f2 is closed, then f is closed if an error is propagated.
} // f2 is closed, then f is closed on a normal path


case let (.Some(username), .Some(password)):
print("Success!")
enum Optional {
case None
case Some(T)
}
var username: String?
var password: String?
username = .Some("Alex")
password = .None


Это делает guard естественным способом проверки нефатальных предварительных условий без использования «пирамиды сметри»
{
"stat" : "ok",
"blogs" : {
"blog" : [
{
"needspassword" : true,
"id" : 73,
"name" : "Bloxus test",
"url" : "http:\/\/remote.bloxus.com\/"
},
{
"id" : 74,
"name" : "Manila Test",
"needspassword" : false,
"url" : "http:\/\/flickrtest1.userland.com\/"
}
]
}
}
struct Blog {
let id: Int
let name: String
let needsPassword : Bool
let url: NSURL
}
func parseBlog(blogDict: [String:AnyObject]) -> Blog? {
if let id = blogDict["id"] as NSNumber? {
if let name = blogDict["name"] as NSString? {
if let needsPassword = blogDict["needspassword"] as NSNumber? {
if let url = blogDict["url"] as NSString? {
return Blog(id: id.integerValue,
name: name,
needsPassword: needsPassword.boolValue,
url: NSURL(string: url)
)
}
}
}
}
return nil
}
«Что нового в Swift 2?» на примерах