Swift是什么? Swift是苹果于WWDC 2014发布的编程语言,这里引用The Swift Programming Language的原话: Swift is a new programming language for iOS and OS X apps that builds on the best of C and Objective-C, without the constraints of C compatibility. Swift adopts safe programming patterns and adds modern features to make programming easier, more flexible and more fun. Swift’s clean slate, backed by the mature and much-loved Cocoa and Cocoa Touch frameworks, is an opportunity to imagine how software development works. Swift is the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language. 简单的说: Swift用来写iOS和OS X程序。(估计也不会支持其它屌丝系统) Swift吸取了C和Objective-C的优点,且更加强大易用。 Swift可以使用现有的Cocoa和Cocoa Touch框架。 Swift兼具编译语言的高性能(Performance)和脚本语言的交互性(Interactive)。 Swift语言概览 基本概念 注:这一节的代码源自The Swift Programming Language中的A Swift Tour。 Hello, world 类似于脚本语言,下面的代码即是一个完整的Swift程序。 println("Hello, world")
变量与常量 Swift使用var声明变量,let声明常量 var myVariable = 42 myVariable = 50 let myConstant = 42
类型推导 Swift支持类型推导(Type Inference),所以上面的代码不需指定类型,如果需要指定类型: let explicitDouble : Double = 70
Swift不支持隐式类型转换(Implicitly casting),所以下面的代码需要显式类型转换(Explicitly casting): let label = "The width is " let width = 94 let width = label + String(width)
字符串格式化 Swift使用\(item)的形式进行字符串格式化: let apples = 3 let oranges = 5 let appleSummary = "I have \(apples) apples." let appleSummary = "I have \(apples + oranges) pieces of fruit."
数组和字典 Swift使用[]操作符声明数组(array)和字典(dictionary): var shoppingList = ["catfish", "water", "tulips", "blue paint"] shoppingList[1] = "bottle of water" var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic", ] occupations["Jayne"] = "Public Relations"
一般使用初始化器(initializer)语法创建空数组和空字典: let emptyArray = String[]() let emptyDictionary = Dictionary<String, Float>()
如果类型信息已知,则可以使用[]声明空数组,使用[:]声明空字典。 控制流 概览 Swift的条件语句包含if和switch,循环语句包含for-in、for、while和do-while,循环/判断条件不需要括号,但循环/判断体(body)必需括号: let individualScores = [75, 43, 103, 87, 12] var teamScore = 0 for score in individualScores { if score > 50 { teamScore += 3 } else { teamScore += 1 } }
可空类型 结合if和let,可以方便的处理可空变量(nullable variable)。对于空值,需要在类型声明后添加?显式标明该类型可空。 var optionalString: String? = "Hello" optionalString == nil var optionalName: String? = "John Appleseed" var gretting = "Hello!" if let name = optionalName { gretting = "Hello, \(name)" }
灵活的switch Swift中的switch支持各种各样的比较操作: let vegetable = "red pepper" switch vegetable { case "celery": let vegetableComment = "Add some raisins and make ants on a log." case "cucumber", "watercress": let vegetableComment = "That would make a good tea sandwich." case let x where x.hasSuffix("pepper"): let vegetableComment = "Is it a spicy \(x)?" default: let vegetableComment = "Everything tastes good in soup." }