gpt4 book ai didi

ios - swift中的Builder模式设置方法

转载 作者:行者123 更新时间:2023-11-28 05:42:21 24 4
gpt4 key购买 nike

我刚从 Android base 转移到 ios,正在快速寻找构建器模式 get 和 set 方法,但找不到类似的东西。仅发现以下内容

var ptype : String? {
get{
return self.ptype
}set (ptype) {
self.ptype = ptype
}
}

最佳答案

在使用了这么多用 Swift 编写的库之后,我很少看到有人在 Swift 中使用构建器模式。

我认为 Builder Pattern 的主要优势已经可以通过 Swift 的其他语言特性来实现。你完全可以创建一个所有参数都是可选的构造函数,你几乎只是在 Swift 中重新创建了构建器模式:

class Foo {
let a: Int
let b: String
let c: Bool

init(a: Int = 0, b: String = "", c: Bool = false) {
self.a = a
self.b = b
self.c = c
}
}

你可以像这样创建一个Foo:

// You can omit any of the arguments, just like the builder pattern
Foo(
a: 123
b: "Hello World"
c: true
)

我认为这是 Java 中类似这样的东西的一个更干净的版本:

new FooBuilder()
.setA(123)
.setB("Hello World")
.setC(true)
.build()

但如果你坚持,这里有一些非常冗长的 Swift 实现了 Builder 模式:

class Foo {
private(set) var a: Int = 0
private(set) var b: String = ""
private(set) var c: Bool = false

init(a: Int = 0, b: String = "", c: Bool = false) {
self.a = a
self.b = b
self.c = c
}

class Builder {
private var innerFoo = Foo()

@discardableResult
func withA(_ a: Int) -> Builder {
innerFoo.a = a
return self
}

@discardableResult
func withB(_ b: String) -> Builder {
innerFoo.b = b
return self
}

@discardableResult
func withC(_ c: Bool) -> Builder {
innerFoo.c = c
return self
}

func build() -> Foo {
return innerFoo
}
}
}

关于ios - swift中的Builder模式设置方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56180347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com