swift是什么?MARHTML5中文学习网 - HTML5先行者学习网
swift是苹果于wwdc 2014发布的编程语言,这里引用the swift programming language的原话:MARHTML5中文学习网 - HTML5先行者学习网
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.MARHTML5中文学习网 - HTML5先行者学习网
swift adopts safe programming patterns and adds modern features to make programming easier more flexible and more fun.MARHTML5中文学习网 - HTML5先行者学习网
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.MARHTML5中文学习网 - HTML5先行者学习网
swift is the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language.MARHTML5中文学习网 - HTML5先行者学习网

简单的说:MARHTML5中文学习网 - HTML5先行者学习网
swift用来写ios和os x程序。(估计也不会支持其它 丝系统)MARHTML5中文学习网 - HTML5先行者学习网
swift吸取了c和objective-c的优点,且更加强大易用。MARHTML5中文学习网 - HTML5先行者学习网
swift可以使用现有的cocoa和cocoa touch框架。MARHTML5中文学习网 - HTML5先行者学习网
swift兼具编译语言的高性能(performance)和脚本语言的交互性(interactive)。MARHTML5中文学习网 - HTML5先行者学习网
swift语言概览MARHTML5中文学习网 - HTML5先行者学习网
基本概念MARHTML5中文学习网 - HTML5先行者学习网
注:这一节的代码源自the swift programming language中的a swift tour。MARHTML5中文学习网 - HTML5先行者学习网
hello worldMARHTML5中文学习网 - HTML5先行者学习网
类似于脚本语言,下面的代码即是一个完整的swift程序。MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
println(" hello world" )MARHTML5中文学习网 - HTML5先行者学习网
变量与常量MARHTML5中文学习网 - HTML5先行者学习网
swift使用var声明变量,let声明常量。MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
2MARHTML5中文学习网 - HTML5先行者学习网
3MARHTML5中文学习网 - HTML5先行者学习网
var myvariable = 42MARHTML5中文学习网 - HTML5先行者学习网
myvariable = 50MARHTML5中文学习网 - HTML5先行者学习网
let myconstant = 42MARHTML5中文学习网 - HTML5先行者学习网
类型推导MARHTML5中文学习网 - HTML5先行者学习网
swift支持类型推导(type inference),所以上面的代码不需指定类型,如果需要指定类型:MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
let explicitdouble : double = 70MARHTML5中文学习网 - HTML5先行者学习网
swift不支持隐式类型转换(implicitly casting),所以下面的代码需要显式类型转换(explicitly casting):MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
2MARHTML5中文学习网 - HTML5先行者学习网
3MARHTML5中文学习网 - HTML5先行者学习网
let label = " the width is "MARHTML5中文学习网 - HTML5先行者学习网
let width = 94MARHTML5中文学习网 - HTML5先行者学习网
let width = label + string(width)MARHTML5中文学习网 - HTML5先行者学习网
字符串格式化MARHTML5中文学习网 - HTML5先行者学习网
swift使用/(item)的形式进行字符串格式化:MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
2MARHTML5中文学习网 - HTML5先行者学习网
3MARHTML5中文学习网 - HTML5先行者学习网
4MARHTML5中文学习网 - HTML5先行者学习网
let apples = 3MARHTML5中文学习网 - HTML5先行者学习网
let oranges = 5MARHTML5中文学习网 - HTML5先行者学习网
let applesummary = " i have /(apples) apples."MARHTML5中文学习网 - HTML5先行者学习网
let applesummary = " i have /(apples + oranges) pieces of fruit."MARHTML5中文学习网 - HTML5先行者学习网
数组和字典MARHTML5中文学习网 - HTML5先行者学习网
swift使用[]操作符声明数组(array)和字典(dictionary):MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
2MARHTML5中文学习网 - HTML5先行者学习网
3MARHTML5中文学习网 - HTML5先行者学习网
4MARHTML5中文学习网 - HTML5先行者学习网
5MARHTML5中文学习网 - HTML5先行者学习网
6MARHTML5中文学习网 - HTML5先行者学习网
7MARHTML5中文学习网 - HTML5先行者学习网
8MARHTML5中文学习网 - HTML5先行者学习网
var shoppinglist = [" catfish" " water" " tulips" " blue paint" ]MARHTML5中文学习网 - HTML5先行者学习网
shoppinglist[1] = " bottle of water"MARHTML5中文学习网 - HTML5先行者学习网
var occupations = [MARHTML5中文学习网 - HTML5先行者学习网
" malcolm" : " captain"MARHTML5中文学习网 - HTML5先行者学习网
" kaylee" : " mechanic"MARHTML5中文学习网 - HTML5先行者学习网
]MARHTML5中文学习网 - HTML5先行者学习网
occupations[" jayne" ] = " public relations"MARHTML5中文学习网 - HTML5先行者学习网
一般使用初始化器(initializer)语法创建空数组和空字典:MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
2MARHTML5中文学习网 - HTML5先行者学习网
let emptyarray = string[]()MARHTML5中文学习网 - HTML5先行者学习网
let emptydictionary = dictionary< string float> ()MARHTML5中文学习网 - HTML5先行者学习网
如果类型信息已知,则可以使用[]声明空数组,使用[:]声明空字典。MARHTML5中文学习网 - HTML5先行者学习网
控制流MARHTML5中文学习网 - HTML5先行者学习网
概览MARHTML5中文学习网 - HTML5先行者学习网
swift的条件语句包含if和switch,循环语句包含for-in、for、while和do-while,循环/判断条件不需要括号,但循环/判断体(body)必需括号:MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
2MARHTML5中文学习网 - HTML5先行者学习网
3MARHTML5中文学习网 - HTML5先行者学习网
4MARHTML5中文学习网 - HTML5先行者学习网
5MARHTML5中文学习网 - HTML5先行者学习网
6MARHTML5中文学习网 - HTML5先行者学习网
7MARHTML5中文学习网 - HTML5先行者学习网
8MARHTML5中文学习网 - HTML5先行者学习网
9MARHTML5中文学习网 - HTML5先行者学习网
let individualscores = [75 43 103 87 12]MARHTML5中文学习网 - HTML5先行者学习网
var teamscore = 0MARHTML5中文学习网 - HTML5先行者学习网
for score in individualscores {MARHTML5中文学习网 - HTML5先行者学习网
if score > 50 {MARHTML5中文学习网 - HTML5先行者学习网
teamscore += 3MARHTML5中文学习网 - HTML5先行者学习网
} else {MARHTML5中文学习网 - HTML5先行者学习网
teamscore += 1MARHTML5中文学习网 - HTML5先行者学习网
}MARHTML5中文学习网 - HTML5先行者学习网
}MARHTML5中文学习网 - HTML5先行者学习网
可空类型MARHTML5中文学习网 - HTML5先行者学习网
结合if和let,可以方便的处理可空变量(nullable variable)。对于空值,需要在类型声明后添加?显式标明该类型可空。MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
2MARHTML5中文学习网 - HTML5先行者学习网
3MARHTML5中文学习网 - HTML5先行者学习网
4MARHTML5中文学习网 - HTML5先行者学习网
5MARHTML5中文学习网 - HTML5先行者学习网
6MARHTML5中文学习网 - HTML5先行者学习网
7MARHTML5中文学习网 - HTML5先行者学习网
8MARHTML5中文学习网 - HTML5先行者学习网
var optionalstring: string? = " hello"MARHTML5中文学习网 - HTML5先行者学习网
optionalstring == nilMARHTML5中文学习网 - HTML5先行者学习网
var optionalname: string? = " john appleseed"MARHTML5中文学习网 - HTML5先行者学习网
var gretting = " hello!"MARHTML5中文学习网 - HTML5先行者学习网
if let name = optionalname {MARHTML5中文学习网 - HTML5先行者学习网
gretting = " hello /(name)"MARHTML5中文学习网 - HTML5先行者学习网
}MARHTML5中文学习网 - HTML5先行者学习网
灵活的switchMARHTML5中文学习网 - HTML5先行者学习网
swift中的switch支持各种各样的比较操作:MARHTML5中文学习网 - HTML5先行者学习网
1MARHTML5中文学习网 - HTML5先行者学习网
2MARHTML5中文学习网 - HTML5先行者学习网
3MARHTML5中文学习网 - HTML5先行者学习网
4MARHTML5中文学习网 - HTML5先行者学习网
5MARHTML5中文学习网 - HTML5先行者学习网
6MARHTML5中文学习网 - HTML5先行者学习网
7MARHTML5中文学习网 - HTML5先行者学习网
8MARHTML5中文学习网 - HTML5先行者学习网
9MARHTML5中文学习网 - HTML5先行者学习网
10MARHTML5中文学习网 - HTML5先行者学习网
11MARHTML5中文学习网 - HTML5先行者学习网
let vegetable = " red pepper"MARHTML5中文学习网 - HTML5先行者学习网
switch vegetable {MARHTML5中文学习网 - HTML5先行者学习网
case " celery" :MARHTML5中文学习网 - HTML5先行者学习网
let vegetablecomment = " add some raisins and make ants on a log."MARHTML5中文学习网 - HTML5先行者学习网
case " cucumber" " watercress" :MARHTML5中文学习网 - HTML5先行者学习网
let vegetablecomment = " that would make a good tea sandwich."MARHTML5中文学习网 - HTML5先行者学习网
case let x where x.hassuffix(" pepper" ):MARHTML5中文学习网 - HTML5先行者学习网
let vegetablecomment = " is it a spicy /(x)?"MARHTML5中文学习网 - HTML5先行者学习网
default:MARHTML5中文学习网 - HTML5先行者学习网
let vegetablecomment = " everything tastes good in soup."MARHTML5中文学习网 - HTML5先行者学习网
}