見出し画像

Swiftでいこう -- プロパティってなに?

struct Boxがあります。


struct Box{
  let width:Int
  let height:Int
}

この場合

let width:Int
let height:Int

がプロパティです。

普通に使う場合は格納型プロパティ(Stored property)と呼ばれ、値を保持するために使われます。

structの場合は初期化の処理は必須ではありませんが、classでは必須です。

class についてはこんなかんじで,

class Human {
   var name:String
   let age:Int
   init(name: String, age: Int){
       self.name = nema
       self.age = age
   }
}
class Human {
  var name:String = "taro"
  let age:Int = 20
}

初期化が必須です。

ちょっと違う便利な使い方ができるのが、計算型プロパティ(Computed property)というものです。

コードを書いてみましょう。

struct Area {
   
   var width: Int
   var height: Int
   
   init(width: Int, height: Int) {
       self.width = width
       self.height = height
   }
   
   var area: Int {
       get{
           return width * height
       }
   }
}

使ってみましょう。縦、横が20の面積は?

var box = Area(width: 20, height: 20)
print(box.area) // 400と表示

コンソールには400と表示されました。計算をして表示しましたね。そういう機能を持たせることができます。

set{}を付け加えて値を変更することもできます。以下をくっつけます。

 set{
          width = newValue * 2
          height = newValue * 2
      }

すると

struct Area {
   
   var width: Int
   var height: Int
   
   init(width: Int, height: Int) {
       self.width = width
       self.height = height
   }
   
   var area: Int {
       get{
           return width * height
       }
       set{
           width = newValue * 2
           height = newValue * 2
       }
   }
}

なります。

では使ってみましょう。

var box = Area(width: 20, height: 20)
box.area = 5
print(box.area) //  100と表示
box.area = 5 

boxの中の変数areaに5を"set"します。5は"newValue"の値となり、"5 * 2"と計算されます。ここでは 5 * 2 = 10なので、"width","height"は10となり、

get{
return width * height
}

で処理されます。 結果"10 * 10 = 100" となります。

print関数で処理すると"100"と表示されます。getで計算、setがある場合は値が変更して計算できるということですね。

この記事が気に入ったらサポートをしてみませんか?