構造体は3つの要素から成り立っています。
- プロパティ(変数・定数)
- イニシャライザ(初期化の関数)
- メソッド(関数)
ここからはメソッドについて扱っていきます。
構造体の中でのメソッドの書き方
注目
メソッドは関数のこと。関数と書き方は同じです。
<br>
struct 構造体名{
プロパティ
イニシャライザ
func メソッド名(引数:型名) -> 戻り値の型名{
処理
return 戻り値
}
実行方法
インスタンス.メソッド名(引数:値)
メソッドの中で自身のメソッドを呼びたい場合
self.メソッド名(引数名:値)
具体例(生徒の情報管理)
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() でプリントします。
コメントアウト
//コメントでコメントアウトします。