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)"

}

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

Swift学习笔记,布布扣,bubuko.com

时间: 06-11

Swift学习笔记的相关文章

SWIFT学习笔记05

1.Swift 无需写break,所以不会发生这种贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answer *= base } 3.case 可以匹配更多的类型模式,包括区间匹配(range matching),元组(tuple)和特定类型的描述. 可以这样用case case 1...3: naturalCount = "a few" 4.如果存在多个匹配,那么只会执行第一个被匹配到的 ca

SWIFT学习笔记02

1.//下面的这些浮点字面量都等于十进制的12.1875: let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0//==12+3*(1/16) 2.//类型别名,用typealias关键字来定义类型别名 typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min 3.//元组 let ht

swift学习笔记(三)关于拷贝和引用

在swift提供的基本数据类型中,包括Int ,Float,Double,String,Enumeration,Structure,Dictionary都属于值拷贝类型. 闭包和函数同属引用类型 捕获则为拷贝.捕获即定义这些常量和变量的原作用域已不存在,闭包仍然可以在闭包函数体内引用和修改这些值 class属于引用类型. Array的情况稍微复杂一些,下面主要对集合类型进行分析: 一.关于Dictionary:无论何时将一个字典实例赋给一个常量,或者传递给一个函数方法时,在赋值或调用发生时,都会

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

Swift学习笔记(二)参数类型

关于参数类型,在以前的编程过程中,很多时间都忽视了形参与实参的区别.通过这两天的学习,算是捡回了漏掉的知识. 在swift中,参数有形参和实参之分,形参即只能在函数内部调用的参数,默认是不能修改的,如果想要修改就需要在参数前添加var声明. 但这样的声明过后,仍旧不会改变实参的值,这样就要用到inout了,传递给inout的参数类型必须是var类型的,不能是let类型或者字面类型,(字面类型是在swift中常提的一个术语,个人认为就是赋值语句,也不能修改)而且在传递过程中,要用传值符号"&

Swift学习笔记十:属性

1.存储属性       1. 作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值.存储属性可分为变量存储属性(关键字var描述)和常量存储属性(关键字let描述). struct student{ let name = "" var score = 0 } let a = student(name:"小笨狼",score:96)           注意:                ① 定义储存属性时,需要为每一个属性定义一个默认值.在初始化的时候,

Swift学习笔记(4)--字符串及基本使用

String是例如"hello, world","海贼王" 这样的有序的Character(字符)类型的值的集合,通过String类型来表示. Swift 的String类型与 Foundation NSString类进行了无缝桥接.如果您利用 Cocoa 或 Cocoa Touch 中的 Foundation 框架进行工作.所有NSString API 都可以调用您创建的任意String类型的值.除此之外,还可以使用本章介绍的String特性.您也可以在任意要求传

Swift学习笔记(一):No such module &#39;Cocoa&#39;

在xcode中创建一个Playground文件, 进行导包操作 ,import Cocoa 却提示No such module 'Cocoa' 原因是该Playground文件的platform 设置成了iOS,改为OS X 即可 如果进行导包操作 ,import UIKit 却提示No such module 'UIKit' 则原因相反,改为iOS即可 打开File Inspector,如下图设置 Swift学习笔记(一):No such module 'Cocoa'