首页 > 代码库 > Swift学习笔记

Swift学习笔记

Apple 新推的Swift已经好几天了。对于向我这样的oc都还没完全琢磨透彻的菜鸟来说……(简直就是福利啊,joke)

看了几天的Swift,只是有了基本的印象。总感觉比较换混乱,可能源自与自己没怎么学过脚本语言。索性,边看边记,加深印象。

本来部分内容源自Apple的《The Swift Programming Language》以及互联网教程。其余内容均为个人理解,不保证正确。


 

进入正题:

1、Swift是什么?

Apple唤他作:雨燕。其实英语过了四级的都应该看出来,Swift还有一层含义:迅速、快。所谓The Swift Programming Language,其实直译应该是快速编程语言。而这,也应该就是Swift这门语言的精髓所在。

在《The Swift Programming Language》中,也可以看到对Swift的描述。大致如下:

Swift用来写iOS和OS X程序。

Swift吸取了C和Objective-C的优点,且更加强大易用。

Swift可以使用现有的Cocoa和Cocoa Touch框架。

Swift兼具编译语言的高性能(Performance)和脚本语言的交互性(Interactive)。

简言之:Swift是一门开发iOS和OS X的,(可能)比OC好用的编程语言。

2、Swift的基础语法

2.1 Swift的数据类型基基础用法

最直观的感受:不用写分号了,但是需要严格!小心!注意!仔细!空格的使用。而且真的和脚本语言很像。例如声明常量let,声明变量var,输出println()

eg:

?
1
2
3
4
var str:String = "swift"
let num = 321
str = str + String(num)
println("\\hello " + str);<br><br>输出:<strong>\hello swift</strong>

说明一下,声明不定类型的变量直接var,指定类型则var 变量名:变量类型 = "变量值"。let也一样,区别是let声明的是常量。拼接字符串的方法是"+",两个不同类型的不能直接加,必须显式类型转化。类型转化的方式是:类型(参数),字符串可以简写:\(参数)。

字符串还可以包含以下特殊字符:

转义特殊字符\0(空字符),\\(反斜线),使用\ t(水平制表符),\ n(换行符),\ r(回车),\“(双引号)和\‘(单引号)

单字节Unicode标量,写成\ XNN,其中nn是两位十六进制数

两字节Unicode标量,写成\ unnnn,其中nnnn是四个十六进制数字

四字节Unicode标量,写成\Unnnnnnnn,其中nnnnnnnn是八进制数字

PS:变量还可以这样玩,你造吗?虽然笔主觉得酱紫很不好。

输出:

没错,中文,甚至Unicode编码的图片都可以作为变量。妈妈再也不用担心我不会取名字了,joke。

然后,再补充一个概念:可空与不可空。

String类型也分两种,String?和String!,?问号表示可空,!叹号表示非空。默认情况下是非空的。这个有助于在某些情况下处理可空变量。在后文分之结构if语句会继续说明。

eg:

话说,Swift的数据类型貌似只有三种(到目前为止,我是这么认为的,当然除开了基本数据类型而言),除了上文说到的String,还有Array和Dictionary。

Array和Dictionary的初始化空方法如下:

?
1
2
let emptyArray = String[]()
let emptyDictionary = Dictionary<String, Float>()

甚至这样:

?
1
2
let emptyArray = []
let emptyDictionary = [:]

使用方法如下:

Array:

?
1
2
var numList = [1,0, 3, 4]
numList[1] = 2

Dictionary:

?
1
2
3
4
5
var Person = [
    "Name": "John",
    "Gender": "Unknown",
]
Person["Gender"] = "Male"

比OC爽的一点是,大家发现没。数组可以直接使用数字,不用再NSNumber转化一次了。不过经测试,Array和Dictionary只能装载同一数据类型。这比较egg pain。

比如上面的例子。再加一个Age字段,也只能是String的。然后在使用的时候再转成整型。

2.2 Swift的控制流

分支主要包括if和switch,循环主要包括for-in、for、while和do-while。

eg:

?
1
2
3
4
5
6
7
8
9
10
let array = [1, 2, 3, 4, 5]
 
for score in array {
    if score > 3 {
        println(">3")
    }
    else {
        println("else")
    }
}

一般的使用方法和大多编程语言类似。只是省略了括号。

但是也有一些地方人很是理解,大家理解理解:

?
1
2
3
4
5
var optionalName: String? = "John Appleseed"
var gretting = "Hello!"
if let name = optionalName {
    gretting = "Hello, \(name)"
}

先留个悬念,后面接着写……