Swift4语法新特性(二)

简介: Swift4语法新特性

六、协议支持混合


   Swift在对变量类型进行界定时,是支持使用协议的,例如,在Swift3中,我们可以编写如下的代码:


//swift3

protocol People {

   var name:String{set get}

   var age:Int{set get}

}


protocol Teach {

   func teachSwift()

}


class Teacher: People,Teach {

   var name: String = "jaki"

 

   var age: Int = 25

 

   func teachSwift() {

       print("teaching...")

   }

}


func printTeacher(p:Teacher)  {

   print(p.name,p.age)

   p.teachSwift()

}

上面的代码中,printTeacher方法里使用Teacher类对参数进行的界定,实际上这种做法并不好,Teacher类知识Teach协议与People协议的一种混合实现,在定义方法参数时,应该使用协议来进行参数的界定,可是Teacher类同时实现了两个协议,这在Swift3版本中是无法解决的问题,在Swift4中你则可以这样写:


protocol People {

   var name:String{set get}

   var age:Int{set get}

}


protocol Teach {

   func teachSwift()

}


class Teacher: People,Teach {

   var name: String = "jaki"

 

   var age: Int = 25

 

   func teachSwift() {

       print("teaching...")

   }

}


func printTeacher(p:Teach&People)  {

   print(p.name,p.age)

   p.teachSwift()

}

&复合可以对协议进行混合,更加贴近面向协议的编程方式。


七、一点总结


   从Swift语言第1个版本发布到Swift3和Swift3.2进行了语言内容和风格的大改,Swift4中进行的改动实际并不大而且大多是你开发中可能并用不到的特性。随着Swift语言的成长,这种语言的设计风格是与其他传统语言有着本质的区别,我个人感悟,Swift语言如下的特点确实值得我们学习与思考:


1.安全性极高


   所谓安全性,实际上就是语言是否容易出错,再通俗一些,即是一种编程语言是依赖其自身特性防止其出错还是依赖开发者经验防止其出错。我记得在初学JavaScript时感觉十分苦恼,因为JavaScript是变量弱类型的,并且其隐式转换十分危险(虽然代码编写起来畅快无比)。在Swift中,则基本不会出现类型不匹配,类型被隐式转换了等问题。当然,换句话说,这也使得编程者必须遵守更多的规则(或者说写更多的代码),虽然各有利弊,但对初学者来说,Swift明显要友好很多。


   Swift语言安全性极高表现在如下几点:


1.用let和var来分别声明常量和变量,let声明的量值不可改,从逻辑上保证变量安全。


2.变量类型必须明确(很多时候你没指定是因为编译器的推断功能),从类型上保证安全。


3.闭包分为逃逸和非逃逸,从逻辑上保证闭包使用的安全。


4.溢出运算符与算术运算符分开,从代码上保证安全。


5.类的初始化检查策略,从类的定义上保证安全。


6.删除++与--运算符,删除常规for循环,从习惯上保证安全。


2.灵活性极高


   Swift语言的灵活性非常有现代编程语言的特点,有其是其对泛型的支持,是的面向协议的编程方式在Swift语言上可以畅行无阻。灵活性表现在如下几点:


1.强大的泛型编程方式,协议关联类型等。


2.where子句可以精准的进行泛型约束。


3.Optioal类型和可失败构造方法的支持。


4.Any与AntObject类型的支持。


5.强大的枚举和结构体。


6.递归枚举的支持。


7.支持重载与自定义运算符。


3.编码体验极高


   编码体验这点并不完全依赖与Swift语法,也多有编译器的功劳。


1.支持字符串内嵌变量来构建字符串。


2.支持后置闭包的写法。


3.元组类型的支持。


4.支持默认隐式拆包类型。


5.支持区间运算符。


6.函数分内外两种参数名(外参数名可以省略)。


7.语法上支持便利构造方法。


8.语法层面支持的懒加载。


   上面只是列出了一些特性,Swift语言中有意思的地方多的举不胜举,如果你有意更深入的了解它,你可以搜索清华大学出版社的《Swift从入门到精通》一书,其中是我对Swift3进行的全面讲解,也包含iOS开发的部分知识和实战,你也可以直接通过QQ316045346联系我本人进行交流与互相学习。最后,一语以总结Swift语言:一门十分强大并且十分易入门的现代编程语言,只要你掌握了所有语法规则,想出错很难!

目录
相关文章
|
2月前
|
安全 Swift iOS开发
【Swift开发专栏】Swift基础语法详解
【4月更文挑战第30天】Swift是苹果2014年发布的编程语言,适用于iOS、macOS等多个平台。它比Objective-C更安全、现代、易学。本文主要介绍Swift基础:常量变量(`let`和`var`),数据类型(整数、浮点数、布尔、字符串),元组,可选类型(Optional)。此外,还涉及运算符(算术、比较、逻辑)、控制流(`if`、`for`、`while`、`switch`)以及函数和闭包的使用。通过这些基础知识的学习,可以帮助初学者快速上手Swift。
|
2月前
|
安全 Swift iOS开发
swift语法
swift语法
31 1
|
2月前
|
Swift
Swift语言的语法
Swift语言的语法
46 2
|
JavaScript API Swift
深入浅出Swift(1)——基础语法
深入浅出Swift(1)——基础语法
86 0
|
Swift
swift语法的基本介绍(Swift中数据类型)
swift语法的基本介绍(Swift中数据类型)
169 1
swift语法的基本介绍(Swift中数据类型)
|
存储 Swift iOS开发
Swift实用小册11: Subscript下标语法的使用
Swift实用小册11: Subscript下标语法的使用
216 0
Swift实用小册11: Subscript下标语法的使用
|
Swift
swift语法的基本介绍(常量和变量)
swift语法的基本介绍(常量和变量)
109 0
|
NoSQL Java Scala
Swift和Scala语法上的诸多相似之处
国外开发者最近发现,WWDC2014上苹果发布的新语言Swift,和古老的Scala语言在语法上存在众多的相似之处。
222 0
Swift和Scala语法上的诸多相似之处
|
存储 安全 Java
Swift4语法新特性(一)
Swift4语法新特性
101 0
|
安全 Ubuntu Linux
Swift 5.3的进化:语法、标准库、调试能力大幅提升
Swift 从 5.0 的 ABI 稳定到5.1 的模块稳定,Swift 终于不是《Swift 入门到重学》了。本次 WWDC2020,Swift 5.3 正式发布,Swift 依旧朝着安全、高效、易读的方向持续发力,不断的在改进语法,增强代码的表达能力和易用性。因为 Swift 的模块稳定,SPM 现在也支持了二进制模块的分发,逐渐完善的社区生态也在不断拓宽 Swift 可以涉足的领域,而不仅仅是在 Apple 平台之上。
2456 0
Swift 5.3的进化:语法、标准库、调试能力大幅提升