`func<T: Type>` 和 `func<T>(..) where T: Type` 之间的区别?

Difference between `func<T: Type>` and `func<T>(..) where T: Type`?

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

  1. func<T: Type>
  2. func<T>(..) where T: Type

两者之间有区别吗?还是这只是遗留下来的遗留语法?

没有区别,我不知道有什么约定。

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

它们在功能上是相同的。第一个版本是出于遗留原因,它是 Swift 1 的遗留物。第二个版本在概念上较新,Apple 认为 "more proper"。