Swift part13 (412レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
37
(3): (ワッチョイ 4f35-1a2e) 2021/06/28(月)11:33 ID:eks/qTPV0(1/4) AAS
struct DoubleGenerator: IteratorProtocol {
var cnt = 1
typealias Element = Int
mutating func next() -> Element? {
defer { cnt *= 2 }
return cnt <= 10 ? cnt : nil
}
}
struct Doubler: Sequence {
// typealias Element = Int?
typealias Iterator = DoubleGenerator

func makeIterator() -> Iterator {
return Iterator()
}
}
上記のコードはコンパイル出来るのですが、コメントを外すとダメです。

SequenceのAPI DocumentにはElement, Iterator requiredとあるのに何故でしょう?
38
(1): (ワッチョイ 4f35-1a2e) 2021/06/28(月)11:39 ID:eks/qTPV0(2/4) AAS
>>37
API Referenceには
Default implementations provided.
とあるのでconflictするのかな?

ちな、compile errorは、
error: 'Sequence' requires the types ‘Doubler.Element' (aka 'Optional<Int>')
and 'DoubleGenerator.Element' (aka 'Int') be equivalent
40
(1): (ワッチョイ 3f01-0Hhk) 2021/06/28(月)12:30 ID:/8Q9yNC80(1) AAS
>>37
コメントアウトしてもOKなのは推論が効くから

SequenceのElementは↓なのでエラーメッセージにあるようにInt?じゃなくIntにする
associatedtype Element where Self.Element == Self.Iterator.Element
42
(1): (ワッチョイ 4f35-1a2e) 2021/06/29(火)07:37 ID:2raiHHQH0(1/4) AAS
>>37
func makeIterator() -> Iterator {
return Iterator()

この部分はdefault implementationがあるとAPI referenceにある。
Jump to Definitionでソースを見てみる!
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.023s