加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift2.0--文档学习笔记

发布时间:2020-12-14 01:49:50 所属栏目:百科 来源:网络整理
导读:最近把 《The Swift Programming Language 中文版》粗略地看了一遍,并随手留了点笔记,以备忘。 1、闭包,通过闭包对字符串数组进行排序,闭包的函数体部分由关键字in引入 names.sort( { (s1: String,s2: String) - Bool in return s1 s2 } ) names.sort( {
最近把 《The Swift Programming Language 中文版》粗略地看了一遍,并随手留了点笔记,以备忘。

1、闭包,通过闭包对字符串数组进行排序,闭包的函数体部分由关键字in引入

names.sort( { (s1: String,s2: String) -> Bool in return s1 < s2 } )
names.sort( { s1,s2 in return s1 > s2 } )(类型推断,推断参数类型)
names.sort( { s1,s2 in s1 > s2 } )(隐式返回,推断返回什么类型)
names.sort( { $0 > $1 } ) (参数名缩写,参数顺序调用)
names.sort(>)(运算符函数,swift自动推断)

2、尾随闭包的使用

let digitNames = [
0: "Zero",1: "One",2: "Two",3: "Three",4: "Four",5: "Five",6: "Six",7: "Seven",8: "Eight",9: "Nine"
]
let numbers = [16,58,510]
let strings = numbers.map {
(var number) -> String in
var output = ""
while number > 0 {
output = digitNames[number % 10]! + output
number /= 10
}
return output
}
println(strings)
输出:[OneSix,FiveEight,FiveOneZero]

3、嵌套函数的捕获值
//传入Int ,返回()->Int
//被传入的Int被潜逃函数捕获,并持有,不断累加。
func makeIncrementor(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
func incrementor() -> Int {
runningTotal += amount
return runningTotal
}
return incrementor
}

override func viewDidLoad() {
super.viewDidLoad()

let dd = makeIncrementor(forIncrement: 7)
println(dd())   //7
println(dd())   //14

let ee = dd
println(ee())   //21
4、Swift 中字符串(String),数组(Array)和字典(Dictionary)类型均以结构体的形式实现。这意味着String,Array,Dictionary类型数据被赋值给新的常量或变量,或者被传入函数或方法中时,它们的值会发生拷贝行为(值传递方式)。 5、延迟存储属性(lazy)来避免复杂类中不必要的初始化。 6、可以通过把方法,属性或下标脚本标记为final来防止它们被重写 7、循环引用的解决方式 Person和Apartment的例子展示了两个属性的值都允许为nil,并会潜在的产生循环强引用。这种场景最适合用弱引用来解决。 Customer和CreditCard的例子展示了一个属性的值允许为nil,而另一个属性的值不允许为nil,这也可能会产生循环强引用。这种场景最适合通过无主引用来解决。 两个属性都必须有值,并且初始化完成后永远不会为nil。在这种场景中,需要一个类使用无主属性,而另外一个类使用隐式解析可选属性。 解决闭包引起的循环强引用,通过定义捕获列表。 8、internal:可以访问自己模块中源文件里的任何实体,但是别人不能访问该模块中源文件里的实体。 9、Swift中的private访问和其他语言中的private访问不太一样,它的范围限于整个源文件,而不是声明。 10、元组的访问级别与元组中访问级别最低的类型一致。 11、子类的访问级别不得高于父类的访问级别。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读