シーケンス演算子
CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 75/86。
Swiftは、ループを記述することなく配列に関する情報を素早く取得できる、便利な組み込みプロパティやメソッドを提供しています。これらのシーケンス演算子を使用すると、最小限のコードで一般的な計算を行うことができます。
count プロパティは、配列内の要素の数を返します。
let scores = [85, 92, 78, 90]
print(scores.count) // 4数値配列に対して、Swiftは最小値と最大値を見つけるためのメソッドを提供しています。min()メソッドとmax()メソッドは、空の配列には最小値や最大値が存在しないため、オプショナル型を返します:
let temperatures = [72, 68, 75, 80, 65]
if let lowest = temperatures.min() {
print(lowest) // 65
}
if let highest = temperatures.max() {
print(highest) // 80
}すべての要素の合計を計算するには、reduceメソッドを使用します。これは、初期値から始めてすべての値を結合します:
let prices = [10, 20, 30]
let total = prices.reduce(0, +)
print(total) // 600 は開始値であり、+ はSwiftに各要素を累計に加算するように指示します。これらの演算子を組み合わせることで、平均を簡単に計算できます:
let grades = [85, 90, 78, 92]
let average = grades.reduce(0, +) / grades.count
print(average) // 86チャレンジ
簡単scoresを受け取り、配列に関する統計情報のサマリー文字列を返す関数analyzeScoresを作成してください。
シーケンス演算子を使用して、スコアの個数、最小値、最大値、および平均値を計算し、それらを1つのサマリー文字列にフォーマットします。
ロジック:
countを使用して要素の総数を取得しますmin()を使用して最小値を見つけますmax()を使用して最大値を見つけますreduce(0, +)を使用して合計を計算し、個数で割って平均値を算出します- すべての統計情報を含むフォーマットされた文字列を返します
パラメータ:
scores([Int]): 整数のスコアの配列(少なくとも1つの要素が含まれていることが保証されています)
戻り値: 統計情報を含むフォーマットされた文字列 (String)。形式: "Count: X, Min: X, Max: X, Avg: X"
例: scoresが[85, 90, 78, 92]の場合、関数は"Count: 4, Min: 78, Max: 92, Avg: 86"を返す必要があります。
注意: 平均値は整数除算を使用して計算してください(小数点以下は不要です)。
チートシート
Swiftには、ループを書かずに配列を操作するための組み込みのプロパティやメソッドが用意されています。
countプロパティは、要素の数を返します:
let scores = [85, 92, 78, 90]
print(scores.count) // 4min()メソッドとmax()メソッドは、最小値と最大値を見つけます。空の配列には最小値も最大値も存在しないため、これらはオプショナル型を返します:
let temperatures = [72, 68, 75, 80, 65]
if let lowest = temperatures.min() {
print(lowest) // 65
}
if let highest = temperatures.max() {
print(highest) // 80
}reduceメソッドは、初期値から始めてすべての値を組み合わせることで合計を計算します:
let prices = [10, 20, 30]
let total = prices.reduce(0, +)
print(total) // 60reduceとcountを組み合わせて平均を計算します:
let grades = [85, 90, 78, 92]
let average = grades.reduce(0, +) / grades.count
print(average) // 86自分で試してみよう
func analyzeScores(scores: [Int]) -> String {
// ここにコードを記述してください
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。