Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. Swift入門編 - 変数と定数の使い方

変数と定数の使い方

みなさまどうも。

さて、前回は変数と定数の宣言とか色々とお疲れ様でした。

さて、変数とか定数とかの定義方法を紹介したわけでございますが、肝心な使い方のご紹介がまだでしたね。

というわけで今回は変数とかを使って軽く処理を書いてみましょう。この概念の強力さを少しでも体験できましたら幸いでございます。

まずよく使う値を変数や定数に代入しておくことでメンテナンス(修正)がめっちゃ楽になる、というパターンを紹介したいと思います。

というわけで以下がサンプルです。

print("僕は初音ミクちゃんが好きです。")
print("僕は初音ミクちゃんを愛しています。")
print("僕は初音ミクちゃんと結婚したいです。")

上記のサンプルは初音ミクちゃんへの愛を語ったとっても素敵なプログラムでございますね。

さて、人生には色々あるわけでございますので、もし初音ミクちゃんじゃなくてIAちゃんを好きになってしまったらどうしましょう。

上記のサンプルの状態だと計3箇所修正しなくてはなりませんね。こんな感じです。

print("僕はIAちゃんが好きです。") // こんな感じで計3箇所直さないとダメです。
print("僕はIAちゃんを愛しています。")
print("僕はIAちゃんと結婚したいです。")

もし上記の愛のポエムプログラムが1万行くらいあったらなんかもう色々と頭がやばいですね。

しかし、初音ミクちゃんとIAちゃんの可愛さを考えると1万行突破は起こり得る事態なのではないかと著者は考えます。

ではここで変数とか定数を使ってみましょう。こんな感じになります。

let lover: String = "初音ミク"

print("僕は" + lover + "ちゃんが好きです。")
print("僕は" + lover + "ちゃんを愛しています。")
print("僕は" + lover + "ちゃんと結婚したいです。")

もうお察しの良い人はわかりましたね。

初音ミクちゃんじゃなくてIAちゃんが好きになっても定数『lover』の値だけ書き換えれば全ての処理に反映されます。

let lover: String = "IA" // ここだけ直せばOKです。

print("僕は" + lover + "ちゃんが好きです。")
print("僕は" + lover + "ちゃんを愛しています。")
print("僕は" + lover + "ちゃんと結婚したいです。")

これで1万行あろうが10万行あろうが問題ではなくなります。正当なアップデートってやつですね。

まずこれが変数とか定数の使い方として紹介したい一例です。よく使う値はちゃんと変数とか定数に格納しておくことでメンテナンスが圧倒的に楽ちんになります。

これと同じようなパターンで、処理削減のために演算した結果を変数とかに格納しておく、といったパターンも強力なので軽く紹介しておきます。以下のサンプルを見て下さい。

print(1 + 1)
print(1 + 1)
print(1 + 1)
print(1 + 1)
print(1 + 1)

ただ『1 + 1』の演算結果を5回出力してるだけの処理ですね。

これちょっとプログラムという観点から観察してほしいのですが、『1 + 1』の演算を5回、コンピューターにさせてしまっていますね。

『1 + 1』の結果は常に『2』で変化がありません。こういうときは変数とか定数に入れてあげて、それを使って処理を組むことでコンピューターへの負担を減らすことができます。

let n = 1 + 1 // 演算結果が変わらないのであれば変数とか定数とかにいれてあげます。

print(n) // 定数を使って出力します。
print(n)
print(n)
print(n)
print(n)

このパターンも覚えておきましょう。

そしてもう一つ紹介したいサンプルがあり、変数は自分自身を演算(計算)に使い、その結果を自分に代入するというトリッキーなことができます。

なんのこっちゃって話なんですが、以下のサンプルをみてください。これ、なんて出力されるか分かりますでしょうか。他の記事でも紹介したサンプルですが、数学にはないプログラミングならではのトリッキーな演算方法になります。

var n = 1

n = n + 1

print(n)

先に答えを言ってしまうと答えは『2』です。

ではちょいと解説していきますね。まず最初の1行目ですが、これは問題ないですね。変数『n』に数値『1』が入っているだけです。値を書き換えるので定数ではなく変数を使ってます。

var n = 1;

問題は次の行です。

n = n + 1;

ここで引っかかっちゃう人多いです。ここでプログラミングでは右辺から左辺へ処理が進んでいく、ということを思い出してみましょう。

つまり、最初に処理が走るのは右辺です。なので右辺に注目します。右辺の処理が走る前の変数『n』には数値の『1』が代入されています。ってことはこうなりますね。

n + 1; // 変数『n』は数値の『1』なので、つまりこの演算は『1 + 1』です。

そしてその演算結果を書き換えてみるとこうなります。

n = 2;

というわけで答えは『2』になります。

いかがだったでしょうか。プログラミングは数学と非常に似ている、というか本質的には同じようなものだったりするのですが、数学とは違ったプログラムならではのトリッキーな演算方法だったと思います。

Swiftでは『\(変数または定数)』とすることで文字列の中で変数や定数を展開することができます。こんな感じになりますね。

let s = "初音ミク"

print("ぼくは\(s)が好きです。") // 『ぼくは初音ミクが好きです。』が出力されます。

変数とか定数を『\(』と『)』で囲む感じになりますね。これ良く使われるので覚えておいて下さい。

ちなみに展開する変数とか定数の中身が文字列でない場合は勝手に変換されちゃいます。Swiftは基本的に型に厳密に出来ているので、これはちょっと珍しい挙動になりますね。エラーになるかと思いきやエラーにならないのでちょいと気をつけて下さい。

let n = 1, b = true

print("\(n)") // 『1』が出力されます。
print("あいうえお\(b)") // 『あいうえおtrue』が出力されます。

というわけで変数と定数の使用例でございました。ちょっとしたサンプルのご紹介となりましたが、なんとなくでもこの概念の強力さとか便利さが伝わりましたでしょうか。

続いての記事では『配列』についてやっていきます。

ではではこの辺で。またお会いしましょう

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。