gpt4 book ai didi

swift - 参数化类型的方法可以省略类型参数

转载 作者:行者123 更新时间:2023-11-30 12:34:39 26 4
gpt4 key购买 nike

我在 https://github.com/github/swift-style-guide/blob/master/README.md 上阅读了以下建议

但这部分我不明白。接收类型是什么以及接收器是什么?谢谢。

Omit type parameters where possible

Methods of parameterized types can omit type parameters on the receiving type when they’re identical to the receiver’s. For example:

struct Composite<T> {

func compose(other: Composite<T>) -> Composite<T> {
return Composite<T>(self, other)
}
}

could be rendered as:

struct Composite<T> {

func compose(other: Composite) -> Composite {
return Composite(self, other)
}
}

最佳答案

“类型参数”指泛型结构的具体类型。例如,您可以有一个结构 A类型 Composite<Int> 。类型参数为Int 。类似 T 的类型参数是一个泛型类型参数,可以代表任何类型的具体类型,除非受到约束。

该风格指南利用了 Swift 编译器非常擅长推断类型参数这一事实,因此您可以直接编写 Composite没有类型参数。如果在此示例中初始化器为 Composite,则可以执行此操作指定两个参数必须属于同一类型。因为 Swift 知道 self类型为Composite<T> ,那么它就知道other类型也必须是 Composite<T> ,并且自 Composite.init(::)返回相同类型的结构体,则返回类型为Composite<T> 。当然,这一切都取决于初始化器。

就我个人而言,我不同意风格指南在这一点上的观点。最好明确一点,尖括号不会占用那么多空间。

关于swift - 参数化类型的方法可以省略类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43021380/

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