変数と定数

今回はプログラミングにおいて重要な要素である「変数」と「定数」について解説します。

目次

変数・定数とは


変数・定数とは簡単にいうとテキストや数字などのデータを入れておく「箱」のようなものです。

下の画像のようなイメージのものです。

この場合では「number」という箱に「7」という数字を入れています。

他にも「Mark」などの、文字列なども入れることができます。

定義

先ほどの、numberに7を入れたものを、swiftのコードで表してみましょう。

var number = 7

「var」というのは、変数を定義するときの宣言に使います。


定数の場合は「let」を使用します。(変数と定数の違いは後で説明します)



また、プログラミングの世界では「=」は右辺を左辺に代入するという意味があります。


ちょっとしたコードを実行したりするのに便利な、Playgroundを使って変数や定数と使ってみましょう。

Playgroundの作成

Xcodeを開いて
File > New > Playground

macOSのBlankを選択

ファイル名、タグ、保存場所などを決めてCreate

このような画面になればOK


右下のアイコンをクリックするか、下のバーを上にスライドさせてコンソールを開きましょう。

では実際に変数を使ってみましょう。

printとデータ型

まずは次のコードを削除して、

import Cocoa

var greetin = "Hello, playground"

次のコードをコピペしてください。

print(1)

実行ボタンをクリック。

するとコンソールに「1」と表示されます。

ここで使ったのがprint関数というものです。

簡単にいうと()で囲ったのをコンソールに表示してくれます。


次のコードで「Hello」と表示してみましょう。

print("Hello")

Helloを"(ダブルクォーテーション)で囲ったのは、Helloが文字列であるためです。


次のコードだと、計算して3と表示されます。

print(1 + 2)

しかし次のコードだと、機械は「1 + 2」を「文字列」として認識するため、そのまま
1 + 2
と表示されます。

print("1 + 2")


「1」や「42」のような数値を「Int型」といい、
「Hello」や「こんにちは」などの文字列のことを「String型」といいます。


先ほどちらっと「+」を使いましたが、

減法は「-」
乗法は「*」
除法は「/」と表し、

print(10 % 3)

のように「%」を使うと「余り」の「1」が出力されます。


また変数を定義するときは、次のようにも書くことができます。

var number: Int = 10

変数名:データ型の名前 = 値
というかんじですね。



このようにIntとStringを説明しましたが、他にもBool型などいろいろあります。
今回はIntとStringを覚えてください。

変数と定数の違い

簡単にいうと
値を変更できるかできないか
です。

変数


varで定義した変数は、最初に定義してもこのように値を更新することができます。

var name = "Mark"
name = "John"


またコードは上から順に読まれていくので、次のコードではこのような実行結果になります。

var name = "Mark"
print(name)
//Mark
name = "John"
print(name)
//John

「//」はコメントアウトと言ってそのコードは実行されません。(メッセージを残したりするのに使われます。)


「//」ではそこから行末まで、

「/* ~~~ */」はアスタリスクをつけるとそこで囲われた部分が実行されません。(複数行をコメントアウトする時に使う)

//実行されません

/*
実行されません
実行されません
*/


定数

続いて定数では値の更新ができません。


次のコードでは値を更新しようとしましたが、できないのでエラーが出てしまいます。

let greeting = "Good Morning"
greeting = "Good Night"


セキュリティ的には値を更新する必要がないものは定数、必要があるものは変数を使うと良いと思います。



また、次のように変数であっても、値の更新の時にデータ型を変えることはできません。

var number = 1
number = "2"


他にも値の更新時のコードは

var number = 10
number = number + 5
print(number)
//15

このように書くことができますが、

var number = 10
number += 5
print(number)
//15

このように省略して書くこともできます。(- * / %も同様に)

メリット

変数・定数のメリットを見ていきましょう。

何回でも使える

次のコードがあったとしましょう。

print(5 * 5 * 3.14)
print(8 * 8 * 3.14)
print(15 * 15 * 3.14)

毎回「3.14」と書くのはめんどくさいので次のようにしました。

let pi = 3.14
print(5 * 5 * pi)
print(8 * 8 * pi)
print(15 * 15 * pi)

コードの量はそれほど変わりませんが、コード量が多くなってくると結構変わってきます。

またそれが何を表しているのかがわかりやすいです。

変更に対応しやすい

円周率の値を間違えて3.15と書いていたとします。

print(5 * 5 * 3.15)
print(8 * 8 * 3.15)
print(15 * 15 * 3.15)

上のコードだと3箇所修正しないといけませんが、定数だと

let pi = 3.15
print(5 * 5 * pi)
print(8 * 8 * pi)
print(15 * 15 * pi)

これを

let pi = 3.14
print(5 * 5 * pi)
print(8 * 8 * pi)
print(15 * 15 * pi)

このように値だけを修正すればいいので、変更に対応しやすいです。

配列

次に配列を紹介します。

配列は次のように記述します。

let fruits = ["apple","orange","lemon","mango","kiwi"]

値へのアクセスは他の言語と同じように0から始まるインデックス番号を使用します。

Text(fruits[0])
//apple

swiftuiでの変数

swiftuiでの変数・定数について少し解説します。

定義位置

今までのTextやImageなどとは違い、ここに定義します。

struct ContentView: View {

	//ここに定義してください
	let number = 5
	
	var body: some View {
		
	}
}

struct ContentView: View {

var body: some View {
の間に定義してください。

struct ContentView: View {
	var body: some View {
		//ここに定義するとビューが再描写されるたびに変数・定数が再定義されてしまうのでやめましょう
	}
}

定数をTextで表示

次に定数を定義して、それをTextビューで表示してみましょう。

struct ContentView: View {
    
	let greeting = "hello"
	
	var body: some View {
		Text(greeting)
	}
}


次はInt型の数値を表示してみましょう。

struct ContentView: View {
    
	let number = 10
	
	var body: some View {
		Text(String(number))
	}
}

Text(number)ではエラーになります。

TextビューにString型の値を渡さなければならないからです。


なので
String(number)
で数値をString型にしています。




次回はListを使ったアプリを作ります。

関連記事