Swift 2.0学习笔记(Day 29)——访问级别

前端之家收集整理的这篇文章主要介绍了Swift 2.0学习笔记(Day 29)——访问级别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
原创文章,欢迎转载。转载请注明:关东升的博客@H_404_1@ @H_404_1@ @H_404_1@

@H_404_1@@H_404_1@

@H_404_1@

访问级别:@H_404_1@@H_404_1@

@H_404_1@

Swift@H_404_1@@H_404_1@提供了@H_404_1@3@H_404_1@@H_404_1@种不同访问级别,对应的访问修饰符为:@H_404_1@@H_404_1@public@H_404_1@@H_404_1@、@H_404_1@@H_404_1@internal@H_404_1@@H_404_1@和@H_404_1@@H_404_1@private@H_404_1@@H_404_1@。这些访问修饰符可以修饰类、结构体、枚举等面向对象的类型,还可以修饰变量、常量、下标、元组、函数属性内容。@H_404_1@@H_404_1@

@H_404_1@
  • public@H_404_1@@H_404_1@。可以访问自己模块中的任何@H_404_1@public@H_404_1@@H_404_1@实体。如果使用@H_404_1@import@H_404_1@@H_404_1@语句引入其他模块,我们可以访问其他模块中的@H_404_1@public@H_404_1@@H_404_1@实体。@H_404_1@

  • internal@H_404_1@@H_404_1@。只能访问自己模块的任何@H_404_1@internal@H_404_1@@H_404_1@实体,不能访问其他模块中的@H_404_1@internal@H_404_1@@H_404_1@实体。@H_404_1@internal@H_404_1@@H_404_1@可以省略,换句话说,默认访问限定是@H_404_1@internal@H_404_1@@H_404_1@。@H_404_1@

  • private@H_404_1@@H_404_1@。只能在当前源文件中使用的实体,称为私有实体。使用@H_404_1@private@H_404_1@@H_404_1@修饰,可以用作隐藏某些功能的实现细节。@H_404_1@

@H_404_1@

使用访问修饰符的示例代码如下:@H_404_1@@H_404_1@

@H_404_1@ @H_404_1@

@H_404_1@@H_404_1@

public class PublicClass {}

internal class InternalClass {}

private class PrivateClass {}

 

public var intPublicVariable = 0

let intInternalConstant = 0  

private func intPrivateFunction() {}

@H_404_1@

使用最佳访问级别:@H_404_1@@H_404_1@

@H_404_1@

由于中@H_404_1@Swift@H_404_1@@H_404_1@中访问限定符能够修饰的实体很多,使用起来比较繁琐,下面我们给出一些最佳实践。@H_404_1@@H_404_1@

@H_404_1@

1. @H_404_1@@H_404_1@统一性原则@H_404_1@@H_404_1@

@H_404_1@
  • 原则@H_404_1@1@H_404_1@:如果一个类型(类、结构体、枚举)定义为@H_404_1@internal@H_404_1@@H_404_1@或@H_404_1@private@H_404_1@@H_404_1@,那么类型声明的变量或常量不能使用@H_404_1@public@H_404_1@@H_404_1@访问级别。因为@H_404_1@public@H_404_1@@H_404_1@的变量或常量可以被任何人访问,而@H_404_1@internal@H_404_1@@H_404_1@或@H_404_1@private@H_404_1@@H_404_1@的类型不可以。@H_404_1@

  • 原则@H_404_1@2@H_404_1@函数的访问级别不能高于它的参数和返回类型(类、结构体、枚举)的访问级别。假设函数声明为@H_404_1@public@H_404_1@@H_404_1@级别,而参数或者返回类型声明为@H_404_1@internal@H_404_1@@H_404_1@或@H_404_1@private@H_404_1@@H_404_1@,就会出现函数可以被任何人访问,而它的参数和返回类型不可以访问的矛盾情况。@H_404_1@

    @H_404_1@

@H_404_1@

2. @H_404_1@@H_404_1@设计原则@H_404_1@@H_404_1@

@H_404_1@

如果我们编写的是应用程序,应用程序包中的所有@H_404_1@Swift@H_404_1@@H_404_1@文件和其中定义的实体,都是供本应用使用的,而不是提供其他模块使用,那么我们就不用设置访问级别了,即使用默认的访问级别。@H_404_1@@H_404_1@

@H_404_1@

如果我们开发的是框架,框架编译的文件不能独立运行,因此它天生就是给别人使用的,这种情况下我们要详细设计其中的@H_404_1@Swift@H_404_1@@H_404_1@文件和实体的访问级别,让别人使用的可以设定为@H_404_1@public@H_404_1@@H_404_1@,不想让别人看到的可以设定为@H_404_1@internal@H_404_1@@H_404_1@或@H_404_1@private@H_404_1@@H_404_1@。@H_404_1@@H_404_1@

@H_404_1@

@H_404_1@@H_404_1@

@H_404_1@

3. @H_404_1@@H_404_1@元组类型的访问级别@H_404_1@@H_404_1@

@H_404_1@

元组类型的访问级别遵循元组中字段最低级的访问级别,例如下面的代码:@H_404_1@@H_404_1@

@H_404_1@

@H_404_1@@H_404_1@

private class Employee {

    var no: Int = 0

    var name: String = ""

    var job: String?

    var salary: Double = 0

    var dept: Department?

}

 

struct Department {

    var no: Int = 0

    var name: String = ""

}

 

private let emp = Employee()

var dept = Department()

 

private var student1 = (dept,emp)    ①

@H_404_1@

@H_404_1@@H_404_1@

@H_404_1@

4. @H_404_1@@H_404_1@枚举类型的访问级别@H_404_1@@H_404_1@

@H_404_1@

枚举中成员的访问级别继承自该枚举,因此我们不能为枚举中的成员指定访问级别。示例代码如下:@H_404_1@@H_404_1@

@H_404_1@

@H_404_1@

public enum WeekDays {

    case Monday

    case Tuesday

    case Wednesday

    case Thursday

    case Friday

}

@H_404_1@

由于@H_404_1@WeekDays@H_404_1@@H_404_1@枚举类型是@H_404_1@public@H_404_1@@H_404_1@访问级别,因而它的成员也是@H_404_1@public@H_404_1@@H_404_1@级别。@H_404_1@@H_404_1@

@H_404_1@

@H_404_1@@H_404_1@

@H_404_1@

@H_404_1@

@H_404_1@

@H_404_1@

@H_404_1@

欢迎关注关东升新浪微博@H_404_1@@tony_@H_404_1@关东升。@H_404_1@
@H_404_1@关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息@H_404_1@
@H_404_1@@H_404_1@​@H_404_1@@H_404_1@更多精品@H_404_1@iOS@H_404_1@、@H_404_1@Cocos@H_404_1@、移动设计课程请关注智捷课堂官方网站:@H_404_1@http://www.zhijieketang.com@H_404_1@智捷课堂论坛网站:@H_404_1@http://51work6.com/forum.php@H_404_1@

猜你在找的Swift相关文章