Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 参数化类型的方法可以忽略类型参数_Swift_Generics - Fatal编程技术网

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