快捷搜索:  as  xxx

swift怎么用?swift编程语言入门介绍

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怎么用?swift编程语言入门介绍 pc841.com

简单的说:

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程序。

1
println(" hello world" )
变量与常量

swift使用var声明变量,let声明常量。

1
2
3
var myvariable = 42
myvariable = 50
let myconstant = 42
类型推导

swift支持类型推导(type inference),所以上面的代码不需指定类型,如果需要指定类型:

1
let explicitdouble : double = 70
swift不支持隐式类型转换(implicitly casting),所以下面的代码需要显式类型转换(explicitly casting):

1
2
3
let label = " the width is "
let width = 94
let width = label + string(width)
字符串格式化

swift使用\(item)的形式进行字符串格式化:

1
2
3
4
let apples = 3
let oranges = 5
let applesummary = " i have \(apples) apples."
let applesummary = " i have \(apples + oranges) pieces of fruit."
数组和字典

swift使用[]操作符声明数组(array)和字典(dictionary):

1
2
3
4
5
6
7
8
var shoppinglist = [" catfish" " water" " tulips" " blue paint" ]
shoppinglist[1] = " bottle of water"

var occupations = [
" malcolm" : " captain"
" kaylee" : " mechanic"
]
occupations[" jayne" ] = " public relations"
一般使用初始化器(initializer)语法创建空数组和空字典:

1
2
let emptyarray = string[]()
let emptydictionary = dictionary< string float> ()
如果类型信息已知,则可以使用[]声明空数组,使用[:]声明空字典。

控制流

概览

swift的条件语句包含if和switch,循环语句包含for-in、for、while和do-while,循环/判断条件不需要括号,但循环/判断体(body)必需括号:

1
2
3
4
5
6
7
8
9
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)。对于空值,需要在类型声明后添加?显式标明该类型可空。

1
2
3
4
5
6
7
8
var optionalstring: string? = " hello"
optionalstring == nil

var optionalname: string? = " john appleseed"
var gretting = " hello!"
if let name = optionalname {
gretting = " hello \(name)"
}
灵活的switch

swift中的switch支持各种各样的比较操作:

1
2
3
4
5
6
7
8
9
10
11
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."
}
 

其它循环

for-in除了遍历数组也可以用来遍历字典:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
}
}
}
largest
while循环和do-while循环:

1
2
3
4
5
6
7
8
9
10
11
var n = 2
while n < 100 {
n = n 2
}
n

您可能还会对下面的文章感兴趣: