Swift 参数化类型的方法可以忽略类型参数
我在网上读了以下建议 但这部分我不明白。什么是接收类型,什么是接收器? 谢谢 尽可能省略类型参数 参数化类型的方法可以忽略 接收类型,当它们与接收器相同时。例如:Swift 参数化类型的方法可以忽略类型参数,swift,generics,Swift,Generics,我在网上读了以下建议 但这部分我不明白。什么是接收类型,什么是接收器? 谢谢 尽可能省略类型参数 参数化类型的方法可以忽略 接收类型,当它们与接收器相同时。例如: struct Composite<T> { … func compose(other: Composite<T>) -> Composite<T> { return Composite<T>(self, other) } } struct复合结构{ …
struct Composite<T> {
…
func compose(other: Composite<T>) -> Composite<T> {
return Composite<T>(self, other)
}
}
struct复合结构{
…
func compose(其他:复合)->Composite{
返回组合(自身、其他)
}
}
可呈现为:
struct Composite<T> {
…
func compose(other: Composite) -> Composite {
return Composite(self, other)
}
}
struct复合结构{
…
func compose(其他:复合)->Composite{
返回组合(自身、其他)
}
}
“类型参数”是指通用结构的具体类型。例如,您可以有一个类型为复合结构的结构
a
。类型参数是Int
。像T
这样的类型参数是一个泛型类型参数,可以代表任何类型的具体类型,除非受到约束
样式指南使用了这样一个事实:Swift编译器非常擅长推断类型参数,因此您可以只编写Composite
,而不使用类型参数。如果在本例中,Composite
的初始值设定项指定两个参数必须是同一类型,则可以执行此操作。既然Swift知道self
是类型Composite
,那么它就知道other
也必须是类型Composite
,而且既然Composite.init(::)
返回相同类型的结构,那么返回类型就是Composite
。当然,这一切都取决于初始值设定项
就个人而言,在这一点上我不同意《风格指南》。最好是明确的,尖括号不会占用太多空间。“类型参数”指的是泛型结构的具体类型。例如,您可以有一个类型为复合结构的结构
a
。类型参数是Int
。像T
这样的类型参数是一个泛型类型参数,可以代表任何类型的具体类型,除非受到约束
样式指南使用了这样一个事实:Swift编译器非常擅长推断类型参数,因此您可以只编写Composite
,而不使用类型参数。如果在本例中,Composite
的初始值设定项指定两个参数必须是同一类型,则可以执行此操作。既然Swift知道self
是类型Composite
,那么它就知道other
也必须是类型Composite
,而且既然Composite.init(::)
返回相同类型的结构,那么返回类型就是Composite
。当然,这一切都取决于初始值设定项
就个人而言,在这一点上我不同意《风格指南》。始终最好是明确的,尖括号不会占用那么多空间。Compare&–在Composite
范围内的Composite
类型被推断为Composite
。Compare&–在Composite
范围内的Composite
类型被推断为Composite
。