日7:Swiftuiの100日


関数、パラメータ、返り値


https://www.hackingwithswift.com/100/swiftui/7

関数


関数を使用してコードの再利用可能なブロックを書くことができます.関数を使用すると、関数内で使用されるパラメーター値を追加でき、関数が実行されると、値を返すことができます.
基本的な機能は次のようになります.
func showIntroLyrics() {
    print("I wanna be the very best")
    print("Like no one ever was")
    print("To catch them is my real test")
    print("To train them is my cause")
}

// call the function
showIntroLyrics()
この関数の値を渡す必要がある場合は、以下のように括弧内のパラメータを追加してください.
func multiplicationTable(number: Int) {
    for i in 1...10 {
        print("\(i) x \(number) is \(i * number)")
    }
}

multiplicationTable(number: 5)
上記の例では、()はデータ型としてnumberだけを受け入れるパラメータです.
関数の値を返すにはInt以前に-> DataTypeを追加します.
func isEven(number: Int) -> Bool {
    if number.isMultiple(of: 2) {
        return true

    } else {
        return  false
    }
}

print(isEven(number: 10))
上記の{}機能はisEvenを返します.
複数の値を返すにはBoolを使います.
func getUser() -> (firstName: String, lastName: String) {
    (firstName: "Ash", lastName: "Ketchum")
}

let user = getUser()
print("Name: \(user.firstName) \(user.lastName)")
上記のtuples関数の戻り値を取得するには、次のように簡単にできます.
let (firstName, lastName) = getUser()
print("Name: \(firstName) \(lastName)")
他の値を必要としない場合は、代わりにgetUserを使用できます.
let (firstName, _) = getUser()
print("Name: \(firstName)")
パラメーターラベルをカスタマイズすることもできます.たとえば、パラメーターを受け入れる関数を持っており、何を渡したいのかはかなりわかりやすいので、関数定義のパラメーター名の前に_を追加できます.
func isUppercase(_ string: String) -> Bool {
    string == string.uppercased()
}

let string = "HELLO, WORLD"
let result = isUppercase(string)
関数パラメータと関数本体の両方に意味のある名前を付けることで、さらにカスタマイズできます.
func printTimesTables(for number: Int) {
    for i in 1...12 {
        print("\(i) x \(number) is \(i * number)")
    }
}

printTimesTables(for: 5)