Learn Swift / 第9章 関数
このコーナーでは、Swift による、Mac OS X アプリケーションの作成方法を、説明しています。
関数
関数 (function、ファンクション) を使うと、一定の処理を、一つにまとめることができます。
import Cocoa func grades() { let score = arc4random_uniform(101) switch score { case 80...100: print("\(score)点、成績はAです") case 70...79: print("\(score)点、成績はBです") case 60...69: print("\(score)点、成績はCです") default: print("\(score)点、落第です") } } grades() grades() grades()関数は、キーワード func で始めます。
ここでは関数名を、grades にしました。関数名は自由に決めることができますが、慣習として、小文字で始めることになっています。
関数名の後の ( と ) の間に、引数と呼ばれるものを、記述します。引数がない場合でも、( と ) は、省略することができません。
関数で処理する内容は、必ず { と } の間に記述しなければなりません。
let score = arc4random_uniform(101)ard4random_uniform は、Apple によって用意されている関数です。この関数は、0 から引数の値の一つ下までの、ランダムな整数を返します。ここでは、0から100までの整数が返されることになります。
関数は定義するだけでは、実行されません。「関数名( )」と記述して、関数を実行する必要があります。ここでは3回実行しています。実行するたびに、違った結果が、デバックエリアに表示されます。なお、関数を実行することを、関数を呼び出すともいいます。
引数
関数は、引数を受け取って、それをもとに、処理を実行することもできます。
import Cocoa func grades(score:Int) { switch score { case 80...100: print("\(score)点、成績はAです") case 70...79: print("\(score)点、成績はBです") case 60...69: print("\(score)点、成績はCです") default: print("\(score)点、落第です") } } grades(80) grades(60) grades(40)func grades(score:Int)引数は、定数となります。ここでは let score: Int と記述するのと同じことになりますが、引数の let は省略されます。引数も必ず型を指定しなければいけません。
引数は、関数内で、普通の定数と同じように使われます。
grades(80)引数のある関数を呼び出す場合は、必ず、引数に値を指定して、呼び出します。
ここでは、grades 関数を、違った引数を指定して、3回呼び出しています。
戻り値
関数は、関数の呼び出しもとへ、値を返すこともできます。この返される値のことを「戻り値」と言います。なお、戻り値は、「返り値」と呼ばれることもあります。
import Cocoa func grades(score:Int) ->String { switch score { case 80...100: return "\(score)点、成績はAです" case 70...79: return "\(score)点、成績はBです" case 60...69: return "\(score)点、成績はCです" default: return "\(score)点、落第です" } } print(grades(80)) print(grades(60)) print(grades(40))func grades(score:Int) -> String戻り値がある場合は、「->」を記述して、そのあとに戻り値の型を記述します。
return "\(score)点、成績はAです"戻り値のある関数では、-> で指定した型と、同じ型の戻り値を、必ず返さなければなりません。
print(grades(80))print 関数の引数には、文字列を表す定数や変数だけでなく、文字列を返す、式や関数も指定することができます。
お疲れ様でした。
次章では、オブジェクト指向プログラミング言語 (object-oriented programming language) の特徴である、クラスを学習します。
無断転載禁止 Copyright 2016. vivacocoa.jp All right reserved.