swift中的iterator.element是什么?

swift中的iterator.element是什么?,swift,iterator,Swift,Iterator,我只是在遵循迭代器模式,您能告诉我下面代码中的S.iterator.Element是什么意思吗&Int其中Turn==S.iterator.Element func computeScoreIncrement<S : Sequence>(_ pastTurnsReversed: S) -> Int where Turn == S.Iterator.Element { var scoreIncrement: Int? for turn in pastTurnsR

我只是在遵循迭代器模式,您能告诉我下面代码中的
S.iterator.Element
是什么意思吗&
Int其中Turn==S.iterator.Element

 func computeScoreIncrement<S : Sequence>(_ pastTurnsReversed: S) -> Int where Turn == S.Iterator.Element {
    var scoreIncrement: Int?
    for turn in pastTurnsReversed {
      if scoreIncrement == nil {
        scoreIncrement = turn.matched! ? 1 : -1
        break
      }
    }
//Turn is class name & nextScorer is protocol instance.
    return (scoreIncrement ?? 0) + (nextScorer?.computeScoreIncrement(pastTurnsReversed) ?? 0)
  }
func computeScoreIncrement(uuPastTurnsReversed:S)->Int其中Turn==S.Iterator.Element{
变量:Int?
对于过去的轮换轮换{
如果scoreIncrement==nil{
scoreIncrement=turn.matched!?1:-1
打破
}
}
//Turn是类名,nextScorer是协议实例。
返回值(分数增量±0)+(下一个分数增量±0.computeScoreIncrement(过去的分数增量±0)
}

迭代器。元素在这里最容易理解。通用参数
S
必须是符合
顺序的类型,正如您在此处指定的:

func computeScoreIncrement<S : Sequence>(_ pastTurnsReversed: S) -> Int
//                        ^^^^^^^^^^^^^^
func计算CoreIncrement(\uPastTurnsReversed:S)->Int
//                        ^^^^^^^^^^^^^^
因此,
S.Iterator.Element
指的是
S
所属的序列类型。如果,比如说,
S
被推断为
[Int]
,那么
S.Iterator.Element
就是
Int
-
[Int]
Int
的序列

现在转到
部分,其中Turn==S.Iterator.Element
部分

如上所述,
S
必须是符合
序列的类型,但这并不是所有约束
S.Iterator.Element
也必须与
Turn
的类型相同。您没有显示如何定义
Turn
。它可以是封闭类、类、结构或枚举的泛型参数


因此,我可以将一个
[Turn]
传递给这个方法,传递给一些其他类型的实例,这些实例是
Turn
s序列。

迭代器。元素在这里最容易理解。通用参数
S
必须是符合
顺序的类型,正如您在此处指定的:

func computeScoreIncrement<S : Sequence>(_ pastTurnsReversed: S) -> Int
//                        ^^^^^^^^^^^^^^
func计算CoreIncrement(\uPastTurnsReversed:S)->Int
//                        ^^^^^^^^^^^^^^
因此,
S.Iterator.Element
指的是
S
所属的序列类型。如果,比如说,
S
被推断为
[Int]
,那么
S.Iterator.Element
就是
Int
-
[Int]
Int
的序列

现在转到
部分,其中Turn==S.Iterator.Element
部分

如上所述,
S
必须是符合
序列的类型,但这并不是所有约束
S.Iterator.Element
也必须与
Turn
的类型相同。您没有显示如何定义
Turn
。它可以是封闭类、类、结构或枚举的泛型参数


因此,我可以将一个
[Turn]
传递给这个方法,传递给其他类型的实例,这些实例是一个
Turn
s序列。

谢谢!很好的解释,谢谢!很好的解释。