teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

indices を使う例を追加しました。

2017/11/04 12:30

投稿

TomohiroKumagai
TomohiroKumagai

スコア441

answer CHANGED
@@ -22,4 +22,16 @@
22
22
  print(intToText(index))
23
23
  }
24
24
 
25
+ ```
26
+
27
+ または、インデックスに注目する場合に `indices` を使う方法もあるかもしれません。
28
+
29
+ フィルターの条件で `a[$0]` と再び `a` を書かないといけないところが(うっかり間違えそうで)なんとなく不安な気もしますけれど、この書き方ならインデックスに着目していることが明瞭になるのと `enumerated` の `offset` と `Array` のインデックスが **たまたま両方 0 から始まる** という事実を使わず、確実に **インデックス** の値で扱えるため、不確かさが紛れ込まないのは大きな利点に思います。
30
+
31
+ 今回みたいに "`Array<Int>`" を想定している限りはそこまで配慮は不要ですけれど。
32
+
33
+ ```swift
34
+ a.indices
35
+ .filter { a[$0] >= 1 }
36
+ .forEach { print(intToText($0)) }
25
37
  ```