変数の扱い方 -Swift編-
今回はSwiftにおける変数の扱い方について、自分の勉強ついでに備忘録的に書こうと思います。
参考にしたのは、Apple Inc.からiBooksを通して提供されているThe Swift Programming Language(Swift2.1)です。
使用環境はOS X El Capitan 10.11.6ですが、基本的にSwiftが動くXCodeがあれば動くと思います。
Swiftとは
SwiftはiOS、OSX、watchOS、tvOS向けのアプリケーションを開発するために作られたプログラム言語です。
参考にしたドキュメントには、簡単だのフレキシブルだの書いていますが、使ってみないとわからないので今回は省きます。
また、Automatic Reference Counting(ARC)にも対応しているようですが、これについても僕は無知なので省きます。
ウォーミングアップ
プログラムを書いたことが有る人なら、一度は通る"Hello World!"です。これは、printという関数を使用して"Hello World!"と出力させます。コードは以下のとおりです。
print("Hello World!")
実行結果は以下のようになります。
CやObjective-Cとは違い、以下の様な特徴があります。 * 各行のコードの最後に";"が要らない * main関数を定義する必要が無いこと * コードはグローバルスコープに書くこと
変数の扱い方
基本的な変数の扱い方
Swiftでは、型の指定・宣言は必須ではありません。例えばCでは
int varInt = 5; float varFloat = 12.3;
とするところをSwiftでは
var varInt = 5 var varFloat = 12.3
と書くことが出来ます。また、定数の宣言についてはCでは
const int varInt = 5;
のところを
let varInt = 5
と書くことが出来ます。定数は、一度定義すると後に書き換えることができない性質があります。
しかし、やはり「型を宣言しないと分からなくなる」という意見はごもっともですし、実は先に宣言した数値より後に代入した値のほうが精度が悪い場合、先に代入されたほうが優先されてしまう。なんてこともあります。
そこで、Swiftでは以下の様な方法で型を宣言することが出来ます。
var varInt: Int = 5 var varFloat: Float = 12.3
ここで、少し文字列の扱い方について説明をしたいと思います。2つの文字列を連結する場合、"+"演算子を利用して連結することが出来ます。以下がサンプルコードです。
var string1: String = "My name is " var string2: String = "Mike." print(string1 + string2)
これは、Javascriptなどでもよく使われている記法ですね。
以上が変数の基本的な使い方になります。
変数の型の変換
変数の型を変換して扱いたい場合はありますよね。その際に、場合に応じて2つの方法があります。
キャストする方法
C言語のように、変換した後に変数が持つ型(例えばintからfloatに変換したい場合はfloatのことを指します)を使って、変換したい変数をキャストすることで型の変換を行うことが出来ます。以下が、サンプルコードです。
let label1: String = "I am " var tall: Int = 170 let label2: String = " cm tall." print(label1 + String(tall) + label2)
int型のtallという変数をString()でキャストしてString型に変換して扱っています。もしも、Stringでキャストしなかった場合型が競合してエラーが発生します。
\と()を使う方法
文字列の中に違う型の変数を挿入したいときは、\と()を使用した方法が簡単です。なかなかイメージがつかないと思いますので、いかにサンプルコードとその実行結果を示します。
var tall: Int = 170 print("I am \(tall)cm tall.")
先ほどのキャストを使うより、簡単でわかりやすいと個人的に思うので、おすすめです。
配列
配列の使い方について、説明したいと思います。基本は、C言語とあまり変わりません。
var fruit: [String] = ["Apple", "Orange", "Grape", "Peach"] print(fruit[0]) var position: [String : String] = [ "Tsubasa" : "Captain", "Okada" : "FW", "Mizuno": "MF", ] print(position["Mizuno"]) position["Mitani"] = "GK" print(position["Mitani"])
実行結果は以下のようになります。
ここで、少し疑問なのは2行目、3行目の実行結果に"Optional"という文字が付いていること。少し調べてみたのですが、少し後にこの詳しい説明が書いているようなので次回に回したいと思います。もしも、読んでいくださっている人の中で解決策ご存知のかたおられましたら、コメントいただけると嬉しいです。
ちなみにですが、空の配列を用意したいということがあると思います。その場合は
let array = [String]() let dictionary = [String: Int]()
また、すでにある配列を空にしたい場合は。
fruit = [] fruit = [:]
と、書くことで定義することが可能です。
お問い合わせ
「ここおかしいんじゃないかな」「ここ、よくわからない」などありましたら、記事にコメントいただけると嬉しいです。もしも、コメントが難しい場合は、以下のメールアドレスにメールいただければと思います。
aki-kasi@a-dawn.net