swift

【Swift基本文法】変数・定数・型について

SWIFT変数
ぱすた
ぱすた
こんにちは、ぱすたです!現在Swiftというプログラミング言語を勉強しています。アウトプットのためにも、自分の学んだことをこのブログでどんどん紹介していきたいと思います。

プログラミングは完全初心者なので「プログラミング勉強してみようかな」という方、勉強始めたての方に参考になると思います!

このブログで紹介するプログラミング言語
  • Swift (iPhoneやMacbookなどiOSアプリを作るための言語)
筆者の動作環境
  • MacBookAir (13inch, 2020年モデル)
  • macOS Big Sur 11.1
  • Xcode (Version 12.3)
  • Swift (Version 5.3.2)

今回はSwiftの勉強を始める際、1番最初に学ぶ文法「変数・定数・型」について紹介していきます。

Swiftの基礎知識

Playgroundについて
Swiftでは基本的にXcodeの「Playground」というファイルを作って、コードを書く練習をします。

ファイルの作り方
  • STEP1
    xcodeを開く
    Xcodeのメニューから[File]→[New]→[Playground]を選択する

  • STEP2
    iOSのBlankを選択し、Nextをクリック
  • STEP3
    ファイルの名前と保存方法を選択する
    Save usにファイル名を入力する。Whereにファイルを保存する場所を選択する。Createをクリックすれば、Playgroundファイルの作成完了!

print()について
print()とは、()の中身をデバックエリアに出力してくれる関数のことです。

下の例だとprintのなかにresultという定数が入っているので、resultの中身をデバックエリアに出力しなさいという意味になります。

resultにはx + yが代入されているので、計算結果の15が下のデバックエリアに表示されます。

コメントについて
これはどういったコードなのか」ということをコメントで残します。メモ書きのようなものです。コメントはコードとして処理されません。

//コメント文またはコメントが複数行になる場合/*コメント文*/と書きます。

   //ユーザーの名前は高木です
   var userName = "高木"

   var userAdress = "Tokyo"    //ユーザーの住所は東京です

   /*
   これもコメント
   これもコメント
   */

   これはコメントではない

下のようにコードの前にコメントを残すとコードもコメントとして扱われてしまうので、上記のようにコードの前の行かコードの後ろにコメントを残そう。

//ユーザーの名前は高木です  var userName = "高木"

変数

変数とはデータを一時的に保管する箱みたいなものです。

データを使いたいときは取り出したり、後から変更したりすることもできます。

箱の中には数値や文字列などの値を格納することができます。

変数を宣言する

書式はこちら

 var 変数名 = 初期値 

varは英語でvariable(変数という意味)。

ぱすた
ぱすた
変数を宣言するときは基本的に初期値を代入することになっています。ただ初期値を代入せず、先に変数だけ作っておく場合もあるのでその方法は下記の型のところで説明します。

この書式は「変数に値を代入する」という意味になります。この変数が値を一時的に保管する箱の役割となります。

Swiftでのイコールは左辺に右辺の値を代入するという意味なので、等しいという意味では無いことに注意!

Swiftでは == (イコールを2つ並べたもの)が等しいという意味になる。

実際の使用例

 var x = 10  

 var name = "田中" 

このように変数を作ることができ、上記の例ではxとnameが変数名になります。

xに10を代入する、nameに田中を代入するという意味になります。

変数名のつけ方

変数名は自分で自由につけることができますが、一般的にローワーキャメルケースにそって名前をつけます。

ローワーキャメルケース
先頭は英語の小文字で始め、単語の区切りを大文字にする名前のつけ方

文章だけ見てもよくわからないので例を見てみましょう!

一般的な変数名の付け方
  • userAdress
  • areaTriangle
  • numBanana

例えばユーザーの住所を格納するための変数を作りたい場合、userAdressのように先頭は小文字で始め、単語の区切りを大文字で始めます。

三角形の面積を変数に格納したいとき、面積を表すareaと三角形を表すTriangleを組み合わせてareaTriangleと名前をつけることができます。

他にもバナナの個数を格納したいとき、numberの略であるnumとBananaを組み合わせてnumBananaのようにローワーキャメルにそって自由に名前をつけることが可能です。

他にも
  • x
  • n
  • apple
  • color1
  • color2

もちろん小文字だけでもOKです。また区切りは大文字でなく、数字の組み合わせも可能です。

var apple = 5var apple = 6のように同じ変数名をつけるとエラーになるが、var apple = 10var Apple = 20のように同じスペルでも小文字と大文字の違いがあればエラーになることはない。

ただし変数名の先頭文字は小文字にすることが一般的なので、変数名は小文字から始めるということを覚えておこう!

エラーになる変数名の付け方

  • 6dan
  • c+
  • ->
  • var

先頭が数字から始まったり、記号を使用した変数名はエラーになります。また変数を宣言するときのvarも変数名に使うことはできません。

変数の値を上書きする

変数の中身は変数名 = 値で上書きすることができます

  var x = 5

   x = 6    // xの中身は6になる

   print(x + x)   // 6+6なので12がデバックエリアに表示される

 

定数

定数も変数と同じくデータを一時的に保管する箱みたいなものです。

変数との違い

変数 値を後から上書きできる

定数 値を後から上書きできない

これが変数との違いです。値を固定したい場合は定数を利用します。

定数を宣言する

宣言方法は変数とほとんど同じで、varをletにすれば定数となります

let 定数名 = 初期値

ぱすた
ぱすた
varはvariableの略でしたが、このletは何かの略ではなく、単純に使役動詞のletみたいです。

実際の使用例

    var x = 3

    var y = 5
    y = 7   // yを7に上書き

    let  result = x * y   // 定数resultにx * yを代入する

x * yはx掛けるyという意味です。数式など値を固定したいものは、letで宣言します。

定数は上書きできない

定数は固定の値なので、上書きすることができません。

そのため上書きしようとするとエラーになります

   let x = 6

   x = 3   // 定数は上書きできないためエラーに

 

変数の宣言はvar 変数名 = 初期値です。

実はvar 変数名:型 = 初期値のように宣言することもできます。また先に変数だけを作っておき、後から値を代入することも可能です

   var s = 60      //型名を示さずに変数宣言

   var s:Int = 60      //型名を示して変数宣言

   var str:String    //初期値を代入せず先にString型の変数を宣言

   str = "ヨーダ"    //後から値を代入

 

変数は値が代入されていないと利用することができないので、初期値を代入せずに変数を作った場合、後から必ず値を代入する必要があります

    var s:Int

    print(s)    // 変数sには値が代入されていないためエラーになる

    s = 3    // 変数に3を代入する
 
    print(s)   // 変数に値が代入されたためエラーにならない。(デバックエリアに3と表示される)

 

ぱすた
ぱすた
これは定数も同じです。またこのようにエラーにならないためにも、変数や定数を作るときは初期値を指定することが推奨されています。

型とは

このvar 変数名:型 = 初期値の型とは一体なんでしょう?

これは代入される値の種類のことです。データ型と言われます。

型は色々な種類がありますが、始めに覚えておいたほうが良い型はこちら

説明
整数型     Int -5、 0、1、 34、 100など整数の値
小数型     Double 3.14、 0.55、-2.15など小数の値
文字列型    String こんにちは、Helloなど文字の値
ブール型    Bool trueまたはfalseの値

 

例えば

整数型
var x = 5の場合、5は整数なので整数型であるIntを指定します

var x:Int = 5

小数型
var x = 3.14の場合、値は小数なので小数型のDoubleを指定します

var x:Double = 3.14

文字列型
var x = "こんにちは"の場合、値は文字列なので文字列型のStringを指定します

var x:String = "こんにちは"

値に文字を指定するときは””(ダブルクウォーテーション)で囲む。

ブール型
ブール型は真偽を表すための型です。truefalseのみ代入することができます

    var x:Bool = true

    var y:Bool = false

Bool型は条件分岐や比較演算子のコードを書く時によく使う型みたいです。

例えば0より大きかったらtrueで小さかったらfalseのように真偽を表したいときなど。。。

難しいですね笑(-。-;

ぱすた
ぱすた
私もまだまだ勉強中なので、Bool型をうまく説明できるようにしっかり勉強したいと思います!

型推論

変数や定数は型を指定しても宣言できることがわかりました。

ここで1つ疑問が出てきます。

型を指定して宣言するのと、指定せず宣言する違いは何だろう?

この疑問は型推論というものを理解すれば解決します。

型はSwiftが自動で判断する

型を指定せずvar x = 6の変数を作ったとします。

6は整数型なのでvar x:Int = 6とすることもできます。

ですが変数や定数の宣言時に初期値を代入すると、Swiftが自動的に値の型を判断してくれます。(これが型推論)

そのため言時に初期値も代入するときは、わざわざ型を明記する必要はありません。

逆をいうと先に変数や定数を作っておいて後から値を代入する場合、型の判別がつかないので必ず型を指定する必要があります

    var s      // エラーになる

    var n:Int    // Int型なので、整数の値のみ代入できるんだなとSwiftが認識してくれる

    n = 10

 

違う型の値は代入できない

Swiftは型に厳しい言語なので、違う型の代入や計算はエラーになります

    var name = "田中"   // Swiftが文字列型と判断してくれる
    name = 11     // 11は整数型の値なので上書きできずエラーになる

    name = "高橋"    // 同じ文字列型なので上書きできる
 


    var x = 7      // これは整数型(Int)
    var y = 3.5     // これは小数型(Double)

    print(x + y)     // 7+3.5なので計算できそうだが、整数型と小数型なのでエラーになる

    //解決方法1
    var x:Double = 7    //このように小数型を指定すると、画面上では7だがSwiftは7.0と判断してくれる

    //解決方法2
    var x = 7.0     // このように指定するとSwiftが小数型の値と判断してくれる

    print(x + y)     // 7.0 + 3.5は同じ小数型なので計算できる

 

まとめ

今回のポイントはこちら

変数の宣言はvar 変数名 = 初期値

定数の宣言はlet 定数名 = 初期値

名前の付け方はローワーキャメル

値には型があり初期値を指定しない場合、このように型を指定する
var 変数名:型
let 定数名:型

ということで今回はSwiftの変数・定数・型について紹介しました。

私は作りたいアプリがあるのでSwiftの勉強を始めましたが、やはりなかなか難しいですね(-。-;

スキマ時間に独学で勉強していますが、楽しいのでこれからも頑張っていきたいと思います。

皆さんもがんばりましょう!