1、定数・変数ってなに?
定数・変数とは文字列や数値を一時的に格納することができるものです。
抽象的すぎてイメージしにくいと思いますが、1つ例を挙げて考えてみましょう。
電卓を思い浮かべてください。
電卓で「1+2=3」の計算をした場合の動作を考えます。
私たちの指での操作としては、
①数字の「1」ボタンをタッチする。
②「+」ボタンをタッチする。
③数字の「2」ボタンをタッチする。
④「=」ボタンをタッチする。
⑤計算結果の「 3」が画面に表示される。
と、このような操作をしているかと思います。当たり前ですよね。
では、この時のiPhone内部の動作を簡単に見てみると、、
①数字の「1」がタッチされた。だからその「1」を記憶しておこう。
②「+」ボタンがタッチされた。足し算という処理をするんだな。
③数字の「2」がタッチされた。だからその「2」を記憶しておこう。
④「=」ボタンがタッチされた。①と③で記憶している数字に②の処理をしよう。
⑤その結果の数値を記憶しておこう。
⑥その結果の数値を画面に表示しよう。
このような処理が動いているのですね。わざとらしく色をつけて書いてみましたが、
この「記憶しておこう」という動作を、定数や変数を使って行います。
記憶するということはiPhoneの中に数値などを「保存」するとも言い換えることができるかと
思います。この保存するという動作を「(定数・変数に)格納する」と呼んだりするんですね。
で、これはルールなんですが、格納する際には定数や変数に名前を付けてあげるようになっています。
2、書き方を覚えよう!
さてちょっとこんがらがってきたかと思いますので、まずは定数や変数の定義の方法を見ていきましょう。
・定数の定義
「let」を使います。そうすると勝手に「あ、これは定数を定義してるんだなー」って処理をしてくれます。
let 定数名:型 = 値
と書けば1つの定数を定義することができ、
let 定数名1:型 = 値1, 定数名2:型 = 値2, 定数名3:型 = 値3, ・・・
と複数の定数をまとめて1行で定義することもできます。
また、1度定義した定数の値は変更することができません。
ずっと同じ=定まっている、から定数と呼ばれるんですね。
・変数の定義
「var」を使います。定数のletがvarに変わっただけです。定義の方法は同じです。
var 変数名:型 = 値
と書けば1つの変数を定義することができ、
var 変数名1:型 = 値1, 変数名2:型 = 値2, 変数名3:型 = 値3, ・・・
と複数の変数をまとめて1行で定義することもできます。
また、変数の値はあとから変更することができます。
変更可能な数値=変数と呼ばれているわけです。
<定数・変数名>
先ほども書きましたが、定数や変数は名前を付けて定義します。それこそが定数名、変数名
ですが、自由に決めることができます。どんな名前を付けても構いません。
<型>
これが結構ややこしいのですが、定数や変数には必ず型というものが存在します。
「この定数は整数ですよ」とか、「この変数には文字列が入っていますよ」といった具合です。
(詳しくは第7回目で説明します。)
3、定数を定義してみよう!
ものは試し、定数や変数を定義してみましょう。まずは定数から。
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
6行目のsuper.viewDidLoad( )の下に記述していきます。(コメントアウトされている部分は削除しています)
以下の1文を追加してください。
let a: Int = 1
letがついていますので定数が定義されています。そして定数名を「a」としています。
また、型は「Int」型となっています。Int型は整数(-2,147,483,648~2,147,483,647)を表します。
今のところはInt型ってのはそういう意味なんだなーと思っておいてください。
そして「=」を使って、そのInt型の定数aに1という値を「代入」しているという意味になります。
イメージとしては、「a」という名前の付いた箱(Int型なのでその範囲の整数を入れることができる箱)
のような入れ物を用意して、その中に「1」という数字を入れている、という感じです。
では、先ほど記入した下の行に次の1行を追加してみてください。
let a: Int = 2
すると、以下のような赤字のエラーメッセージが表示されたかと思います。
「Definition conflicts with previous value」
と書かれていますね。このメッセージの意味は「定義が以前のものと競合してますよー」という意味です。
上の行で定数aを定義しているので下の行ではもう一度定数aを定義することができない、ことになります。
つまり言い換えると、同じ名前の定数を2つ作ることができない。ということです。
考えてみれば当たり前ですよね。同じものが2つあればごちゃごちゃになってしまいますよね。
では、追加した2行目の定数名をaからbに変更してみます。
let b: Int = 2
こうすると1行目で定数aには1が、2行目で定数bには2がそれぞれ定義されて代入されている形になります。
これは正常ですよね?エラーも消えたかと思います。
では試しに、さらに以下の1行を追加してみてください。
a = 3
さてどうなりましたでしょうか?以下のようなエラーが発生しましたね?
「Cannot assign to ‘let’ value ‘a’」
これは「letで定義している定数aにはそれを割り当てることができないよー」という意味になります。
今現在、aには数値の1が代入されています。
上にも書きましたが、定数の値は変更することができないという特徴がありましたね。
そのため新しくaに3を代入しようとしてもうまくいきません。エラー扱いになってしまいます。
中身を変えたい場合は、変数で定義しなくてはいけません。(これは次回やってみたいと思います。)
※おまけ
2行に渡って1つずつ定数を定義していきましたが、以下のようにまとめて定義することもできます。
let a: Int = 1, b: Int = 2
※代入とは??
何度か「定数aに1を代入する」という風に書きましたが、プログラミングの世界では「=」
の文字は代入の意味になります。「右辺の値を左辺に代入する」という意味です。
算数や数学では等式として使っていました。等式は「左辺と右辺が等しい」という意味でしたので、
役割が大きく異なります。
なにが違うの?と思うかもしれませんが、変数を定義したらイメージが湧くと思いますので
しばしお待ちを。。
4、まとめると?
長くなったので、今回はこれで終わりにしたいと思います。
今回のまとめ
・数値などの値を記憶するには、定数や変数を使って値を格納する必要がある。
・定数は同じ名前のものを定義することはできない。(これは変数も同じ)
同じ名前のものを定義するとエラーが発生する。
・定数は1度定義してしまうと値を変更することができない。(これは変数とは違う)
1度定義した定数に別の値を代入しようとするとエラーが発生する。
とまぁこのようになります。しっかりおさえておきましょう。
次回は変数を定義、そしてその値をprintln( )関数を使用してデバッグエリアに表示してみたいと思います。
TechProjin 開発系基礎講座 連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
AIなどで注目急上昇!これから学ぶならPython!!
独学で学ぶ-pythonプログラミング 連載
汎用性◎ 定番プログラミング言語JAVA
Java基礎講座 連載