static 和 class

Swift 中表示“类型范围作用域”这一概念的有两个不同的关键字,  static  和  class

在非 class 的类型 enum, struct 上下文中,我们统一使用 static 来描述

struct Point {

let x: Double

let y: Double

// 存储属性

static let zeo = Point(x: 0, y: 0)

// 计算属性

static var ones: [Point]{

return [Point(x: 1, y: 1),

Point(x: -1, y: 1),

Point(x: 1, y: -1),

Point(x: -1, y: -1)]

}

// 类型方法

static func add(p1: Point, p2: Point) -> Point {

return Point(x: p1.x + p2.x, y: p1.y + p2.y)

}

}

let pA = Point(x: 0, y: 1)

print(pA.x)

print(Point.zeo)

class Student {

// 类型的存储属性 , 在 class 中,不能使用 class 修饰存储性属性,可以修饰计算性的

static let age = 10

// 类型的计算性属性                    // 不能调用实例的属性

// 这里的 class 相当于 static

class var nameString : String? {

return "\(age) + hello"

}

// 实例的存储属性

var name:String?

var sex = 10

// 实例的计算性属性, 可以调用类型的属性(计算性/存储性)

var sexString : String? {

return "\(sex) --- \(Student.age)"

}

}

let age = Student.age

let nameString = Student.nameString // "10 + hello"

let sexString = Student().sexString  //  "10 --- 10"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,854评论 0 6
  • 在swift中 static和class都是用来表示”类型范围作用域“,但是在oc中并不会特别区分,而在swift...
    sprint阅读 883评论 1 2
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,271评论 3 25
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,836评论 18 139
  • 今年已经是四十有二了,都说四十不惑,自己也确有所感,似乎到了这个年龄才真正看明白很多事情,已经不再年轻,已经好像错...
    世风十三阅读 327评论 0 2