[Swift] Array 先頭からの要素 X 個取得

     

TAGS:

⌛️ < 1 min.
配列(Array)の”先頭から最大” X 個取得する方法を説明します。

環境&対象

以下の環境で動作確認を行なっています。

  • macOS Ventura 13.1 Beta
  • Xcode 14.1
  • iOS 16.0

先頭から最大 X 個 取得する

配列の”先頭から最大” X 個を取得する方法を説明します。

いくつ取得したいかはケースバイケースですが、特定の個数を配列の先頭から取得したいことはたまにあります。

以下では、3個 取得したいときの例で説明していきます。

slicing を使った取得

Array は、subscript/([ ]のこと) を使って、要素にアクセスすることができます。この subscript には、Int だけでなく、Range<Int> を渡すこともできます。

したがって、配列の最初の3要素を取得するときには、以下のコードで取得できます。

let array = ... 
let firstThree = array[0..3]

一見、動きそうですが、Array の要素が 3 未満の時には、 Array index is out of range エラーとなります。
subscript を使ってアクセスしているので、Array は、要素が存在する/しないを確認せずにアクセスしようとしますので、要素数が少なければエラーになってしまいます。

Array に 取得したい数以上含まれているのであれば良いのですが、そうでないときには対応が必要となります。

要素数が少ないケースでも取得できるようにするには、いろいろな書き方がありますが、switch 文で書くと、以下のようになります。

let array = ... 
    switch array.count {
    case 0:
        return []
    case 1:
        return array[0..1]
    case 2:
        return array[0..2]
    default:
        return array[0..3]
    }

今度は動きます。

ですが、あまり綺麗な書き方ではないように見えます。

Array

良い方法はないかと、Array のドキュメントを見ても、良さげなメソッドは、Array には見つかりません。

Apple のドキュメントは、こちら

こんなときは、準拠している Protocol に着目してみると良さげなメソッドが見つかることもあります。

Array はさまざまな protocol に準拠しています。
関係ありそうな Protocol だけ抜粋してみても、Array は、Collection, RandomAccessCollection, Sequence と 複数あります。

Sequence タイプ

Sequence は、順序に沿ってアクセスできる Collection が準拠している Protocol です。

Apple のドキュメントは、こちら

この Sequence に準拠していると、prefixというメソッドを使うと、もう少し綺麗に実装できそうです。

Apple のドキュメントは、こちら

当初の先頭から最大 X 個を取得するというコードは以下となります。

let array = ... 
array.prefix(3)

まとめ

配列(Array)の”先頭から最大” X 個取得する方法を説明してみました。

配列(Array)の”先頭から最大” X 個を取得する
  • Array の subscript でもできないことはないが、Array の大きさに気をつける必要がある
  • Sequence の prefix が 先頭から最大 X 要素を取得するメソッド
  • Tips: 使用クラスに良いメソッドがなくても、準拠している protocol を調べてみると良いこともある

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

SwiftUI おすすめ本

SwiftUI を理解するには、以下の本がおすすめです。

SwiftUI ViewMatery

SwiftUI で開発していくときに、ViewやLayoutのための適切なmodifierを探すのが大変です。
英語での説明になってしまいますが、以下の”SwiftUI Views Mastery Bundle”という本がビジュアル的に確認して探せるので、便利です。

英語ではありますが、1ページに コードと画面が並んでいるので、非常にわかりやすいです。

View に適用できる modifier もわかりやすく説明されているので、ビューの理解だけではなく、どのような装飾ができるかも簡単にわかります。

超便利です

SwiftUIViewsMastery

販売元のページは、こちらです。

SwiftUI 徹底入門

# SwiftUI は、毎年大きく改善されていますので、少し古くなってしまいましたが、いまでも 定番本です。

Swift学習におすすめの本

詳解Swift

Swift の学習には、詳解 Swift という書籍が、おすすめです。

著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。

最新版を購入するのがおすすめです。

現時点では、上記の Swift 5 に対応した第5版が最新版です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です