Swift `func`和`func(..)之间的区别,其中T:Type`?

Swift `func`和`func(..)之间的区别,其中T:Type`?,swift,generics,code-formatting,Swift,Generics,Code Formatting,当限制泛型参数的类型时,为什么在Swift中有两种方法 func func。。其中T:Type 这两者之间有区别吗?或者这只是遗留下来的遗留语法 没有区别,我也不知道有什么惯例 就我个人而言,我更喜欢第一个选项,除非它使行的其余部分不得不换行,在这种情况下,我会使用第二个选项。它们在功能上是相同的。第一个版本是因为遗留的原因而存在的,它是Swift 1的保留版本。第二个版本在概念上较新,苹果认为更合适。我觉得大多数苹果文档都遵循第二个选项,如Set、stride、zip等,因此可能对第二个选项有

当限制泛型参数的类型时,为什么在Swift中有两种方法

func func。。其中T:Type
这两者之间有区别吗?或者这只是遗留下来的遗留语法

没有区别,我也不知道有什么惯例


就我个人而言,我更喜欢第一个选项,除非它使行的其余部分不得不换行,在这种情况下,我会使用第二个选项。

它们在功能上是相同的。第一个版本是因为遗留的原因而存在的,它是Swift 1的保留版本。第二个版本在概念上较新,苹果认为更合适。

我觉得大多数苹果文档都遵循第二个选项,如Set、stride、zip等,因此可能对第二个选项有一些偏见。但是,就个人而言,在大多数情况下,我也会选择第一种选择;第二个选项还允许您约束泛型参数的关联类型,这可能是产生偏差的原因@PauloMattos@PauloMattos我认为其中的一些原因可能归结为泛型类型的拼写。考虑Func的相似之处:T:可比性。我认为协议等价,可hash,相当于非重要的实用协议。它们对于类型的标识不是特别重要的,在某种程度上,将约束放在正确的起点是很重要的…@PauloMattos。。。另一方面,在func makeWidget中,F非常重要,并且它的标识并不明显。将WidgetFactory放在开头对我来说是有意义的,强调这是函数API的一个关键方面,而不是像Equatable、Hashtable、Comparable这样的,我更愿意把它放在where子句的前面/下面。@Alexander Yep,这些也是很好的理由。。。但苹果的文档显然偏向于第二种选择。就我所知,即使是最新的SwiftUI和Combine框架也几乎完全遵循它。我想至少在每个API的基础上调整这种风格对他们来说没有多大意义,最好选择一种并坚持下去;