Swift 是一种适用于 iOS 和 OS X 应用的全新编程语言,它建立在最好的 C 和 Objective-C 语言之上,并且没有 C 语言的兼容性限制。Swift 采用安全的编程模式,增加了现代功能使编程更容易、更灵活、更有趣。Swift 以成熟且备受宠爱的 Cocoa 和 Cocoa Touch 框架为 支撑,这是一个重新构想软件开发的机会。
Swift 经过了数年的酝酿,Apple 通过改进现有的编译器、调试器和框架结构奠定了 Swift 的 基础,并通过 Automatic Reference Counting(ARC)简化了内存管理。Swift 的 framework stack 建立在坚实的 Foundation 和 Cocoa 基础之上,实现了现代化和彻底标准化。Objective-C 本身已经逐步发展到到支持 blocks、 collection literals 和 modules,使框架不间断地采 用现代语言技术。基于这个基础,我们可以为今后的 Apple 软件开发引入一种新语言。
Swift 控制台输出:
println(“Hello World”)
简单值
使用 let 来声明常量,使用var来声明变量。
var myVaribale = 42
myVaribale = 50
let myConstant = 42
如果初始化没有提供足够的信息,需要在变量后面声明类型,用冒号分割。
let myDouble = 12.0
let myDouble2: Double = 50
Swift不支持隐形转换为其他类型,如果需要转换请使用显式转换
let label = "The width is "
let width = 94
let widthLabel = label + String(width)
还有一个更简单的方法,把值写在括号中,并且之前写个反斜杠。
let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pices of fruit."
println(appleSummary)
println(fruitSummary)
数组与字典
使用方括号[]来创建数字和字典,并使用下标或者键来访问元素
var myArray1 = [“ArrayItem1″,”ArrayItem2″,”ArrayItem3″,”ArrayItem4”]
myArray1[2] = "Modifiy!!"var myDictionary1 = [
"key1":"value1",
"key2":"value2",
"key3":"value3",
]
myDictionary1[“key2”] = “Nekoya"
要创建一个空数组或者字典,并使用初始化语法。
let emptyArray = String[]()
let emptyDictionary = Dictionary<String , Float>()
也可以使用[]和[:]来创建空的数组和空字典
shoppingList = []
流程控制
使用if和switch赖进行条件操作,使用for-in、for、while和do-while赖进行循环。包裹条件和循环变量括号可以省略,但是语句体的大括号是必须的。
let individualScores = [75,43,103,87,12]
var teamScore = 0
for score in individualScores{
if score > 50{
teamScore += 3
}else{
teamScore += 1
}
}
可以使用if和let赖处理值缺失的情况,有些变量的值是可选的,一个可选的值可能是一个具体的值或者nil,标示值缺失。在类型后面加一个问号标记这个变量是可选的。
var optionalString: String? = "Hello"
optionalString == nil
println(optionalString)var optionalName : String? = "John Appleseed"
var greeting = "Hello!"
optionalName = nil
if let name = optionalName{
greeting = "Hello, \(name)"
println(name)
}else{
greeting = "No human."
println(greeting)
}
如果变量的可选值是nil,条件会判断为false,大括号中的代码就会被跳过。
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."
}
运行Switch中匹配到子句之后,程序会推出switch语句,并不会继续向下运行,所以不需要在每个子句结尾后面写break
可以使用for-in来遍历字典,遍历两个变量赖表示每个键值对。
let interestingNumbers = [
"Prime":[2,3,5,7,11,13],
"Fibonacci": [1,1,2,3,5,8],
"Square": [1,4,9,16,25],
]
var largest = 0
for (kind,numbers) in interestingNumbers{
for number in numbers{
if number > largest{
largest = number
}
}
}
使用while来重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾
var n = 2
while n < 100{
n = n * 2
}var m = 2
do{
m = m * 2
} while m < 100
你可以在循环中使用…来表示范围,也可以使用传统的写法。
for i in 0…3 {
firstForLoop += i
}var secondForLoop = 0;
for var i = 0; i < 3; ++i{
secondForLoop += 1
}