gpt4 book ai didi

swift - Swift 是否有一个隐式的对象初始化器,就像在 C# 中一样?

转载 作者:IT王子 更新时间:2023-10-29 05:18:52 24 4
gpt4 key购买 nike

在 C# 中,我们有对象初始化器,如下所示:

    Person obj = new Person
{
FirstName = "Craig",
LastName = "Playstead",
};

Swift 有这个吗?

例如,我有这段代码:

var config = IndicatesConfig()
config.name = NSLocalizedString(Localizable.FOLDERS, comment: "").uppercaseString
config.style = .DetailHeader
return config

但我想做一些类似的事情:

var config = IndicatesConfig() {
name = NSLocalizedString(Localizable.FOLDERS, comment: "").uppercaseString
style = .DetailHeader
}

谢谢!

编辑:

我不是在引用类初始化器的显式定义。请牢记 C# 示例中显示的语法。

最佳答案

不是这样的。如果您创建自定义 struct,Swift 将在特定条件下创建一个 default memberwise initializer这接近你正在寻找的东西。但除此之外,我认为甚至没有办法实现这样的功能,因为 Swift 缺少诸如 with 关键字之类的东西,可以让您进入新实例的范围。

更新:通过定义自定义运算符,这是我所能得到的最接近的结果:

infix operator <| { }

func <|<T>(decl: @autoclosure () -> T, f: T -> () ) -> T {
let obj = decl()
f(obj)
return obj
}

let label = UILabel() <| {
$0.frame = CGRect(x: 10, y: 10, width: 300, height: 25)
$0.text = "Hello"
$0.enabled = false
}

println(label)
// <UILabel: 0x7fb46240b210; frame = (10 10; 300 25); text = 'Hello'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7fb46240c2b0>>

关于swift - Swift 是否有一个隐式的对象初始化器,就像在 C# 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27019752/

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