• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift里as、as!、as?区别T.Type与动态类型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

as 

1、编译器进行类型转换合法性检查;静态

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: shoppingList[indexPath.section], for: indexPath as IndexPath)

 let k = cell as IndexPath

Cannot convert value of type 'UICollectionViewCell' to type 'IndexPath' in coercion

2、配合switch:类型探测

 

as!as?

类型动态转化;

任意类型转化为特定类型;类型体系检查。

 

类型作为函数参量时,属于动态类型;

类型系统和编译器密切相关。

使用类型进行实例初始化时,编译器要求类型限定必须是静态的;(相对于函数调用)。

所以作为类型传入的类型参数,用于给实例初始化时,必须做限定。

 

(type as! HMLoginModel.Type).init()

 

extension ObservableType where E == Response {

    public func mapModel<T: HandyJSON>(_ type: T.Type) -> Observable<T> {

        return flatMap { response -> Observable<T> in

            (type as! HMLoginModel.Type).init()

            return Observable.just(response.mapModel(T.self))

        }

    }

}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TheSwiftProgrammingLanguage-官方教程精译Swift(6)控制流--ControlFlow发布时间:2022-07-13
下一篇:
swift学习笔记-UI篇之UIImageView发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap