我在https://github.com/github/swift-style-guide/blob/master/README.md
上阅读了以下建议但这部分我不明白。什么接收类型和接收器是什么? 感谢。
尽可能省略类型参数
参数化类型的方法可以省略类型参数 当接收器与接收器相同时接收类型。例如:
struct Composite<T> { … func compose(other: Composite<T>) -> Composite<T> { return Composite<T>(self, other) } }
可以呈现为:
struct Composite<T> { … func compose(other: Composite) -> Composite { return Composite(self, other) } }
答案 0 :(得分:0)
“类型参数”是指通用结构的具体类型。例如,您可以使用A
类型的结构Composite<Int>
。类型参数是Int
。像T
这样的类型参数是一个泛型类型参数,可以代表任何类型的具体类型,除非受约束。
样式指南使用的事实是Swift编译器非常擅长推断类型参数,因此您只需编写Composite
而不使用类型参数。如果在此示例中,Composite
的初始化程序指定两个参数必须属于同一类型,则可以执行此操作。由于Swift知道self
属于Composite<T>
类型,因此它知道other
也必须属于Composite<T>
类型,并且因为Composite.init(::)
返回了Composite<T>
的结构相同类型,则返回类型为void setEnqAllocation(int);
。当然,这一切都取决于初始化程序。
就个人而言,我不同意这一点的风格指南。总是更好地明确,尖括号不会占用那么多空间。