「Cannot convert value of type ‘ClosedRange<Int>’ to expected argument type ‘Range<Int>’」
このエラーが出たという人に向けて、この記事は書かれています。
どうも、ちょげ(@chogetarou)です。
ForEachで数値の範囲指定を扱いたくて、なんとなくコードを書いていたら、このエラーに遭遇しました。
このエラーは、ぱっと見では意味がわからないエラーですが、解決方法はとても簡単です。
原因
このエラーが出る原因は、範囲指定を間違っているからです。
皆さんのForEachの範囲指定を見てみてください。
恐らくForEach(数値 … 数値)といった感じになっているはずです。
実は、(数値 …数値)の部分が間違っているのです。
解決方法

解決方法は簡単で、範囲指定を(数値 ..< 数値)にするだけです。
最後がピリオド(.)を、(<)にします。
理由は分かりませんが、ForEachの範囲指定は、ピリオド3つ(…)ではエラーになるようです。
範囲を( … )から( ..< )に変える場合は、最後の数値が含まれなくなりますので、そこは気をつけてください。
まとめ
- ForEachの範囲指定は、ピリオド3つですると、エラーになる
- ピリオド3つの指定ではなく、最後が(<)の指定にする。
この記事が、皆さんのお役に立ててたら嬉しいです。
エラーが出ても、めげずに頑張ってくださいね!
読んで頂きありがとうございました。
コメント