swift学习笔记及个人感想

新版的swift中 ..操作符已经更换为 ..<

空数组的声明由原来的 Sttring[]()变为[String]()

let blackHeart = "\u2665" 改为  let blackHeart = "\u{2665}"  \u等转义字符时后面的数字要被{}括起来

 

闭包相关:

makeIncrementor来自http://www.cocoachina.com/ios/20140607/8717.html

func makeIncrementor(forIncrement amout: Int )->()->Int {

    var runningTotal = 0

    func incrementor() -> Int{

        runningTotal += amout

        return runningTotal

    }

    return incrementor

}

let incrementBySeven = makeIncrementor(forIncrement: 7)

println(incrementBySeven)

println(incrementBySeven());

println(incrementBySeven());

输出为下:

(Function)

7

14

相比较“一个函数返回没有输入的函数”,以下是“一个函数返回有输入参数的函数”

func myIncrementor(forIncrement amout: Int) -> (b: Int) -> Int{

    var runningTotal = 0

    func incrementor(b: Int) -> Int{

        runningTotal += amout + b ;

        return runningTotal

    }

    return incrementor

}

 

 let incrementBySevenAndThree = myIncrementor(forIncrement: 7)

println(incrementBySevenAndThree)

println(incrementBySevenAndThree(b: 3))

println(incrementBySevenAndThree(b: 3))

 输出为下:

(Function)

10

20

 

 

 


关于Swift中的!和?

像Java这种语言中,

定义一个字符串

String aString ="Hello World";

如果想将aString 设置为null 可以直接这样操作

aString = null;

但是swift中将null(nil)这种类型当作一种比较特殊的类型

在swift中如果你声明一个String 变量:

var aString: String = "Hello world";

如果你想将其设置成Nil

aString = nil;

xcode会报错cannot assign a value of type 'nil' to a value of type 'String'

如果你声明aString 时候在类型后面加上?,此时aString类型是String?(optional value) 不在是String,如下:

var aString: String? = "Hello";

aString = nil ;

就没问题了

关于!,类型后面加!的类型在苹果官方发布的<The swift programming language >(第2版)中叫做 implicitly unwrapped optional ,官方文档是这么解释的(P97)

An implicitly unwrapped optional is a normal optional behind the scenes,but can also be used like a nonoptional value ,without the need to unwrap the optional value each time it is accessed . 

大致就是说,implicitly unwrapped optional(iuo)这种声明方式在语言中的实现方式与optional v 是一致的,而且可以像optional这样一样使用,但是每次访问的的时候不需要再次解析

后面提供了一个例子:

let possibleString: String? = "An optional string."

let forcedString: String = possibleString!

let assumed: String! = "An implicitly unwrapped  optional string."

let implicitString: String = assumedString 

 

 

 

 

 

 

 

 

你可能感兴趣的:(swift)