码迷,mamicode.com
首页 > 编程语言 > 详细

JokeClient-Swift 仿写学习

时间:2016-07-23 12:00:43      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

required init?(coder aDecoder: NSCoder) 可失败构造器

在init关键字后面添加问号(init?)。
可失败构造器会创建一个类型为自身类型的可选类型的对象。你通过return nil语句来表明可失败构造器在何种情况下应该“失败”。

struct Animal {
    let species: String
    init?(species: String) {
        if species.isEmpty { return nil }
        self.species = species
    }
}

2、 as、as!、as?三种类型转换操作符使用详解

as使用场合

1、从派生类转换为基类,向上转型(upcasts)

    class Animal {}
    class Cat: Animal {}
    let cat = Cat()
    let animal = cat as Animal

2.消除二义性,数值类型转换

let num1 = 42 as CGFloat
let num2 = 42 as Int
let num3 = 42.5 as Int
let num4 = (42 / 2) as Double

3. switch 语句中进行模式匹配

如果不知道一个对象是什么类型,你可以通过switch语法检测它的类型,并且尝试在不同的情况下使用对应的类型进行相应的处理

switch animal {
case let cat as Cat:
    print("如果是Cat类型对象,则做相应处理")
case let dog as Dog:
    print("如果是Dog类型对象,则做相应处理")
default: break
}

as!使用场合

as? 和 as! 操作符的转换规则完全一样。但 as? 如果转换不成功的时候便会返回一个 nil 对象。成功的话返回可选类型值(optional),需要我们拆包使用。
由于 as? 在转换失败的时候也不会出现错误,所以对于如果能确保100%会成功的转换则可使用 as!,否则使用 as?


let animal:Animal = Cat()
 
if let cat = animal as? Cat{
    print("cat is not nil")
} else {
    print("cat is nil")
}

转自:Swift - as、as!、as?三种类型转换操作符使用详解(附样例)

方法的局部参数名称和外部参数名称

函数参数可以同时有一个局部名称(在函数体内部使用)和一个外部名称(在调用函数时使用),详情参见函数的外部参数名。方法参数也一样(因为方法就是函数,只是这个函数与某个类型相关联了)。但是,方法和函数的局部名称和外部名称的默认行为是不一样的。

JokeClient-Swift 仿写学习

标签:

原文地址:http://www.cnblogs.com/coolwxb/p/JokeClientSwift-fang-xie-xue-xi.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!