見出し画像

はじめてみよう。プログラミング!- 構造体とクラス(Structures and Classes)2

Struct 構造体

まず最近の構造体のトピックスから。

2019年にSwiftUIが発表されて今年も拡充されて行っています。SwiftUIでは構造体をを使ったフレームワークが多数発表され、それを使うことによって大変プログラムが組みやすく、わかりやすくなっています。また、iOS, macOSなど共通のコードで実行せきるなど、使われる機会が増大中で注目すべきところです。

基本的なことを確認していきましょう。参考サイトです。

まず使い所ですが、クラスととの比較がされていますが、

構造体のデータの実体は常にプログラム内の1カ所から参照されている

とういことです。値型ということが使い所を限定させている理由となっていています。

構造体のよくある形は

struct Simple{
   var year:Int
   var week:Int
   var day:Int
}
struct Area{
   var width:Double
   var height:Double
}

変数で定義(プロパティ)していきます。あとはメソッドと呼ばれる関数を入れていくこともあります。ひとまとまりのデータとして使います。

メソッド

func clac(){
print(width * height)
}

を加えてみます。

struct Area{
   var width:Double
   var height:Double
   
   func clac(){
       print(width * height)
   }
}

そして使う時場合、初期値が設置していない場合に必要なのがイニシャライズと呼ばれる"初期化"、です。構造体で定義してしまう場合、イニシャライザ"init()"を使う場合、そしてクラスにできず構造体のみでできる、暗黙的な初期化、全項目イニシャライザがあります。

var width:Double
var height:Double

と、初期値がなく、"init()"がないので全項目イニシャライザを使います。

方法ですが、

var area = Area(width: 20, height: 30)

となります。変数に入れる時に決定します。そして面積を求めてみます。

area.clac()

"600"と出力されました。

構造体のネスト

ここで、もう少し細分化してみます。構造体のネスト、構造体の中に構造体を入れて使ってみます。

まず長さの構造体を作ります。

struct Length{
   var width:Int
   var height:Int
}

そして、面積を計算するために構造体を作ります。ここで構造体の中に先に作った構造体Lengthを使います。同時に初期値を入れています。

struct Area{
   var length = Length(width: 20, height: 30)
   func clac(){
       print(length.width * length.height)
   }
}

実行します。変数に入れ実体化して実行します。


var area = Area()

area.clac()

"600"と出力されました。

基本的な使い方です。処理をまとめて、スッキリと書くことができます。

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