イチから始めるSwift学習 その6 定数・変数について学ぼう!②

この記事は2015年9月7日に書かれたものです。内容が古い可能性がありますのでご注意ください。


1、変数を定義してみよう!

今回は変数の定義をしてみます。変数の定義の方法は覚えていますか?

var 変数名: 型 = 値

というのが基本の定義の方法だったかと思います。では早速やっていきましょう。

(前回の定数を定義したものに付け足していきます。)

6_1

では、let b: Int = 2の下に、以下の2文を記述してみてください。

var c: Int = 3
var a: Int = 4

すると以下のようなエラーが表示されたかと思います。

6_2

「Definition conflicts with previous value」

はい。これは前回と同じエラーですね。覚えていますか?

「定義が以前のものと競合してますよー」といった内容のものでした。

今、「var a: Int = 4」で変数をaという名前で定義しようとしています。しかしその上の部分で、

もうaという名前は定数で使ってしまっているんですね。

前回、同じ名前の定数を2つ作ることができないと言いましたが、これをちょっと訂正します。

定数だろうと変数だろうと同じ名前のものを2つ作ることができない。ということです。気をつけましょう。

では続きまして、エラーとなっている「var a: Int = 4」を消して、以下の2行目の文に書き換えてください。

var c: Int = 3
c = 5  //この行だけ追加する。

これはエラーがでませんね。変数の値は後から変更することができるという特徴を前回お伝えしたのを

覚えていますか?また、プログラミングでの「=」は等式を表すのではなく、「代入」を表す、ということも

思い出してください。この2行で、

1行目でInt型の変数cを定義して、その変数の中に「3」を代入し、

そして2行目で「5」を変数cの中に再度代入している。

という処理が行われているんです。変数の中身を入れ替えているんです。言われてみたら簡単でしょ?

※変数のまとめ

・定数も変数も同じ名前のものを定義することはできない。

同じ名前のものを定義するとエラーが発生する。

・定数は1度定義してしまうと値を変更することができないが、変数は何度でも

値を変更することができる。

ここにもう少しルールを付け加えると、、

・同じ名前のものは定義することができないが、小文字と大文字は区別される

・変数の値は何度でも変更することができるが、同じ型の値のみでしか変更できない。

んー、少し複雑。。まぁ試してみましょう。

以下の2文を追加してくだい。

var A: Int = 10
A = 10.1

これを実行してみると「var A: Int = 10」の行は問題なく、「A = 10.1」の行でエラーが

発生したかと思います。

6_3

定数aと変数Aは別のものと区別されて扱われているので問題ないのですね。ではエラーを見てみましょう。

「Cannot assign a value of type ‘Double’ to a value of type ‘Int’」

これは「Double型の値をInt型に割り当てることはできないよ。」という意味になります。

前回、Int型は整数(-2,147,483,648~2,147,483,647)を表すと書きました。そうなんです。整数なんです。

なので変数Aは整数を入れる専用の入れ物になっているんですね。そこに「10.1」という整数ではない数を

代入しようとしても、それは無理な話ってわけです。変数といっても何でもかんでも値を変更できる訳では

ないんですね。

この「10.1」のような小数点付きの数値の型の一つに、今出てきた「Double型」というものがあります。

(型については次回説明します。)

2、println( )関数、print( )関数について覚えよう!

第3回目でprintln( )関数を使用してデバッグエリアに「Hello World!」という文字を表示させました。

ここでprintln( )関数とそれによく似たprint( )関数について覚えてしまいましょう。

・println( )関数とprint( )関数の違い

println( )は改行される、print( )は改行されないという違いがあります。ただそれだけです。

以下のように入力して実行してみましょう。

override func viewDidLoad() {
        super.viewDidLoad()

        println("Hello ") //Helloの後ろに1文字スペース
        println("World!")

        print("Hello ") //Helloの後ろに1文字スペース
        print("World!")
    }

表示はどうなったでしょうか?

6_4

println( )は表示がされたあと改行されていますね。それに比べてprint( )は表示の後に改行がされていません。

・文字列を表示する

「println(“Hello World!”)」のようにダブルクォーテーションで文字を囲むと、その中を文字列(string型)

と解釈して表示されます。これはprintln( )やprint( )に限らず、すべてにおいて当てはまりますので覚えて

起きましょう。

・定数、変数の中身を表示する

「println(a)」のように( )の中にそのまま定数名や変数名を入れると、その中に代入されているものを表示

することができます。

では、試してみましょう。

    override func viewDidLoad() {
        super.viewDidLoad()

        let a: Int = 1

        println("a")
        println(a)

    }

表示結果は以下のようになったかと思います。

6_5

1行目のダブルクォーテーションで囲まれた1行目は文字列と判断され「a」が、

2行目は定数名と判断されその中に代入されている「1」が、それぞれ出力されましたね。

・文字列の中に定数(変数)を表示する。

ダブルクォーテーションで囲めば文字列と判断されると書きましたが、その中に

\(定数名、変数名)」と書いてあげると、その部分だけ定数(変数)の中身を表示する

ことができます。「\」はバックスラッシュといい、optionキーを押しながら¥キーを押すと

入力できます。

では、試してみましょう。

    override func viewDidLoad() {
        super.viewDidLoad()

        let a: Int = 1

        print("変数aの中身は")
        print(a)
        println("です。")

        println("変数aの中身は\(a)です。")

    }

6~8行目は文字列と定数の表示をそれぞれ分けていますが、それを1回の表示にスッキリとまとめると

10行目のような表記になります。

この実行結果は全く同じになりますね。

6_6

今回はこれで終わりにします。

次回は変数・定数の型について見ていきたいと思います。

  • このエントリーをはてなブックマークに追加

PAGE TOP