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序列。谢谢!很好的解释,谢谢!很好的解释。