こんにちは、コン(@pippi_kon)です。
この記事では、『Swiftの定数と変数の違い』についてご紹介します。
定数と変数の概要
定数の概要
定数とは、プログラム上で扱う数値や文字列に固有の名前を付けたもののことです。
プログラムでは多くの数値データや文字列データを扱いますが、これらのデータをそのまま扱うと不都合な事が発生するのです。
◆このデータの意味は何だっけ?
→プログラムを見返した時にデータの解読が必要になってしまう。
◆データを一括変更できない
→単純なデータだと余計なものまで変換してしまうおそれがある。
データの意味を調べるためにプログラムを解読したり、データを一つずつ変換するといったことは非効率で無駄な作業です。
このような無駄をなくすために数値や文字列データに名前を付けるのです。
名前を付けるとどうなるのでしょうか。
◆このデータの意味は何だっけ?
→「tax」という名前だから消費税を表すデータだ。解読不要!
◆データを一括変更できない
→定数の中身を書き換えるだけで一括変換できる!
データに名前をつければデータの持つ意味は一目瞭然です。
消費税なら「tax」、円周率なら「pai」、年齢なら「age」などなど。
また、何十行も変換しなければならなかったデータも、定数にしてしまえばたった1行の変換で完了します。
Swiftでは「let」で定義します。
変数の概要
変数とは、プログラム上で扱う数値や文字列に固有の名前を付けたもののことです。
基本的には「定数」と同じ意味合いです。
しかし定数とは異なる点があり、変数はデータの内容をプログラム内で変更できます。
Swiftでは「var」で定義します。
定数と変数の違い
定数と変数の大きな違いは「プログラム内で中身を変更できるか」です。
定数は一度定義してしまうと中身を変更できませんが、変数は変更できます。
定数 | 一度定義すると値を変更できない |
---|---|
変数 | 何回でも値を変更できる |
だったら全部変数でいいじゃん。変数の中身を変えなければ定数と一緒でしょ。
と思う方もいらっしゃるかもしれません。
たしかに一理ありますが、あまり推奨できません。
なぜなら、変更するつもりのない変数を誤って変更してしまったというケースに気付けないからです。(余計なバグに気付けない)
基本的には定数(let)を使用し、プログラム中に中身を変えたいケースが出てきたら変数(var)を使用するといった使い分けを心がけましょう。
定数・変数のルール
規則
定数名・変数名には以下の規則があります。
- 数字で始まる名前は使用できない。
- 演算子(+や-など)は使用できない。
- 予約語(letやvarなど)は使用できない。
- すでに定義した定数名は使用できない。
定数は一度定義すると値を変更できない
定数は一度定義すると値が固定され、その後値を変更することができません。
プログラム内で動的に変更させたい場合は定数ではなく変数を使用します。
変数は1回以上値が変更されること
変数はプログラム内で値を変更するために使われるものです。
変数を定義したのに1度も値が変更されないと警告が表示されます。
変更の必要がないものは変数ではなく定数を使用しましょう。
書式
定数の書式
定数は以下の書式で定義します。
let 定数名 = 数値や文字列
このように定数に数値や文字列を入れることを代入すると言います。
変数の書式
変数は以下の書式で定義します。
var 変数名 = 数値や文字列
定数と同様、変数に数値や文字列を入れることを代入すると言います。
定数の使い方
定数を定義した後、その定数をプログラム内で使用します。
ここでは以下の2パターンの使い方についてご紹介します。
(1)定数に文字列を代入する
(2)定数に数値を代入する
なお、いずれのパターンもSingle View Appプロジェクトを作成した直後の状態を前提としています。
(1)定数に文字列を代入する
文字列を代入するときは文字列をダブルクォーテーション(”)で囲んで指定します。
サンプルプログラム
let name = "KON" print("私の名前は" , name , "です")
実行結果
このようにConsoleに表示されます。
全プログラムコード
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let name = "KON" print("私の名前は" , name , "です") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
(2)定数に数値を代入する
数値を代入するときは全て半角英数字で指定します。
数値なのになぜ“英”数字? と思った方、するどい!
定数には「10」のような数字の他に「1+2+3」のような計算式も指定できるのです。
サンプルプログラム
let price = 100 let tax = 8 let totalprice = price + (price * tax / 100) print("税抜き価格 =", price) print("消費税 =", tax, "%") print("税込み価格 =", totalprice)
実行結果
このようにConsoleに表示されます。
全プログラムコード
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let price = 100 let tax = 8 let totalprice = price + (price * tax / 100) print("税抜き価格 =", price) print("消費税 =", tax, "%") print("税込み価格 =", totalprice) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
変数の使い方
変数を定義した後、その変数をプログラム内で使用します。
ここでは以下の2パターンの使い方についてご紹介します。
(1)変数に文字列を代入する
(2)変数に数値を代入する
なお、いずれのパターンもSingle View Appプロジェクトを作成した直後の状態を前提としています。
(1)変数に文字列を代入する
文字列を代入するときは文字列をダブルクォーテーション(”)で囲んで指定します。
サンプルプログラム
var message = "Swift入門講座" print(message) message = "第4回 変数の使い方" print(message)
実行結果
このようにConsoleに表示されます。
全プログラムコード
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. var message = "Swift入門講座" print(message) message = "第4回 変数の使い方" print(message) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
(2)変数に数値を代入する
数値を代入するときは全て半角英数字で指定します。
数値なのになぜ“英”数字? と思った方、するどい!
変数には「10」のような数字の他に「1+2+3」のような計算式も指定できるのです。
サンプルプログラム
var price = 1000 let discount = 500 price = price - discount print(price)
実行結果
このようにConsoleに表示されます。
全プログラムコード
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. var price = 1000 let discount = 500 price = price - discount print(price) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
最後に
今回は、『Swiftの定数と変数の違い』についてご紹介しました。
定数と変数はどちらも「プログラム上で扱う数値や文字列に名前を付けたもの」ですが、「プログラム内で中身を変更できるか」という違いがあります。
定数 | 一度定義すると値を変更できない |
---|---|
変数 | 何回でも値を変更できる |
余計なバグを作り込まないためにも、基本的には定数(let)を使用し、プログラム中に中身を変えたいケースが出てきたら変数(var)を使用するといった使い分けを心がけましょう!