16.構造体3(メソッド)

構造体は3つの要素から成り立っています。 

ここからはメソッドについて扱っていきます。

構造体の中でのメソッドの書き方

注目

メソッドは関数のこと。関数と書き方は同じです。

<br>
struct 構造体名{
    プロパティ
    イニシャライザ
    func メソッド名(引数:型名) -> 戻り値の型名{
    処理
    return 戻り値
}

実行方法

インスタンス.メソッド名(引数:値)

メソッドの中で自身のメソッドを呼びたい場合

self.メソッド名(引数名:値)

具体例(生徒の情報管理)

今回、今までの復習編で色々組み合わせた具体例です。

構造体関数配列for文を使用しています。

どのブロックがどの文法か、分解していきます。

struct Student{
    var name:String
    var age:Int
    var points:[Int] //[国,数,英]
//メンバーワイズイニシャライザ

//平均点を計算するメソッド
    func ave() -> Float{
        var sum = 0 //sumはInt型
        for i in 0...2
            sum = sum + points[i]
    }
    return Float(sum)/3 //Float(sum)でsumをInt型として扱っている
}
    func printinfo() -> void{
        let ave = self.ave() 
        let phrase = "氏名は\(name)です。\n試験の平均点は\(ave)です。"
     print(phrase)
}

var s = Student(name:"田中",age:15,points[70,79,85]) 
s.printinfo() 
  • Student構造体を作成しました。値は宣言せずメンバーワイズイニシャライザを使用します。
  • points:[int]は配列の型名です。ここでは国・数・英の三教科を想定しています。
  • 構造体の中にメソッドを入れていきます。戻り値は小数を想定してFloat型です。
  • メソッドの中にはfor文を、国が0、数が1、英が2になりsumの値に国、数、英が代入されます。
  • return Float(sum)/3で3つの教科の平均点が出ます。
  • もうひとつ、String型のメソッドを定義します。戻り値がないためvoidです。
  • self.ave()でひとつ前のメソッド(平均点)にアクセスします。
  • var s = Student(name:”田中”,age:15,points[70,79,85]) でインスタンス化しています。ここで値を指定します。
  • s.printinfo() でプリントします。

コメントアウト

//コメントでコメントアウトします。

17.構造体4(スタティックプロパティ)17.構造体4(スタティックプロパティ)