1. 基本构造器:
// 定义一个结构体
struct Point {
var x: Double
var y: Double
// 定义构造器
init() {
x = 0.0
y = 0.0
}
}
// 使用构造器创建实例
let origin = Point()
print("Origin: (\(origin.x), \(origin.y))") // 输出 "Origin: (0.0, 0.0)"
2. 自定义构造器:
struct Celsius {
var temperatureInCelsius: Double
// 自定义构造器
init(fromFahrenheit fahrenheit: Double) {
temperatureInCelsius = (fahrenheit - 32.0) / 1.8
}
init(fromKelvin kelvin: Double) {
temperatureInCelsius = kelvin - 273.15
}
}
let boilingPoint = Celsius(fromFahrenheit: 212.0)
print("Boiling point in Celsius: \(boilingPoint.temperatureInCelsius)") // 输出 "Boiling point in Celsius: 100.0"
3. 参数标签和参数名称:
构造器的参数和方法的参数一样,可以有一个参数标签和一个参数名称。
class Color {
var red, green, blue: Double
// 构造器参数标签为 _,省略参数名称
init(_ red: Double, _ green: Double, _ blue: Double) {
self.red = red
self.green = green
self.blue = blue
}
}
let magenta = Color(1.0, 0.0, 1.0)
4. 构造参数的内部名称和外部名称:
在构造器中,参数的外部名称默认与内部名称相同,但也可以使用外部名称。
struct Size {
var width, height: Double
// 使用外部名称指定参数标签
init(width w: Double, height h: Double) {
width = w
height = h
}
}
let size = Size(width: 10.0, height: 20.0)
5. 可选属性类型:
类、结构体或枚举中的属性可以是可选类型,在构造过程中可以赋值为 nil。
class SurveyQuestion {
var text: String
var response: String?
init(text: String) {
self.text = text
}
}
let cheeseQuestion = SurveyQuestion(text: "Do you like cheese?")
cheeseQuestion.response = "Yes, I do like cheese."
6. 构造过程中的常量属性赋值:
构造过程中可以给常量属性赋值,但只能在构造器的阶段内赋值一次。
class Room {
let name: String
init(name: String) {
self.name = name
}
}
let room = Room(name: "Living Room")
7. 默认构造器:
如果类没有定义任何构造器,Swift 会自动生成一个无参数的默认构造器。
class SomeClass {
var someProperty: String
}
let instance = SomeClass()
在这个例子中,SomeClass 没有定义构造器,因此系统提供了一个默认构造器。
8. 构造器的继承和重写:
子类可以在构造器中调用父类的构造器,并且可以通过 override 关键字重写父类的构造器。
class Vehicle {
var numberOfWheels: Int
init(wheels: Int) {
numberOfWheels = wheels
}
}
class Bicycle: Vehicle {
var hasBasket: Bool
init(hasBasket: Bool) {
self.hasBasket = hasBasket
super.init(wheels: 2) // 调用父类构造器
}
}
let bicycle = Bicycle(hasBasket: true)
这些是一些基本的构造过程操作。构造器是 Swift 中初始化对象的重要手段,通过构造器可以确保对象在使用之前完成初始化。
转载请注明出处:http://www.zyzy.cn/article/detail/6855/Swift