見出し画像

楽しい!Swift。 - A Swift Tour (Functions and Closures-1)

関数

ある処理をまとめて定義しておいて、後で繰り返し使える仕組みがあります。ある処理を定義するものを関数と言います。

関数の定義には func を使います。funcの次に関数名を書き、そのあと引数、戻り値の型になります。

func 関数名(引数) -> 戻り値の型{
  処理   
  return  戻り値
}

func greet(person: String, day: String) -> String {
    return "Hello \(person), today is \(day)."
}
greet(person: "Bob", day: "Tuesday")

print(greet(person: "Bob", day: "Tuesday"))

として関数実行、出力すると

Hello Bob, today is Tuesday.

となり、関数が引数を使って実行されたことがわかります。

関数の引数はデフォルトで、関数はパラメータ名をそのままラベルとして使用します。

(パラメータ名: 引数)  func greet(person: String)など

使うときは

(ラベル: 引数)  greet(person: "Bob")

独自の引数ラベルを設定したい場合は、パラメータ名の前に引数ラベルを記載してください。引数にラベルが不要な場合は、"_" 

person: String → _ person: String

必要な場合は

day: "Tuesday" → on day: String

という感じに変更します。全体としては

func greet(_ person: String, on day: String) -> String {
    return "Hello \(person), today is \(day)."
}

ラベルは"_""on"

(_ person: String, on day: String)

となり、

greet("John", on: "Wednesday")

という感じで使うことができます。

タプル

タプルを使って複数の値を扱うことができます。関数では複数の値を返し、タプルの要素は、名前または番号で取り出すことができます。

func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) {
    var min = scores[0]
    var max = scores[0]
    var sum = 0


    for score in scores {
        if score > max {
            max = score
        } else if score < min {
            min = score
        }
        sum += score
    }


    return (min, max, sum)
}
let statistics = calculateStatistics(scores: [5, 3, 100, 3, 9])
print(statistics.sum)
// Prints "120"
print(statistics.2)
// Prints "120"

返り値

->  (min: Int, max: Int, sum: Int)  として
return (min, max, sum)  と返す

取り出しは

statistics.sum  名前
statistics.2    番号

いいなと思ったら応援しよう!