iOS, iPhone, Swift, 技術系

Swiftをもう一度勉強してみた#1

# はじめに

はい、タイトル通り「Swiftをもう一度勉強してみた」ということで、

昔はちょこっとだけ書いていたSwiftをもう一度書いて

iOSやOS X向けのアプリを趣味で作成しようと思って勉強します!

これは、その記録。

勉強にはSwiftの公式Document『The Swift Programming Language』を利用します。

現在2017年4月15日、Swift3.1の情報です。。

 

# 今回のテーマ

さて、今回のテーマはまず「値に関して」です!

Swiftの変数などについて勉強します。

 

# 値に関して

さてさて、SwiftのDocumentを読んでていると、二つのキーワードが出てきます。それは“let”“var”です。

Documentでは次のように説明されています。

“Use let to make a constant and var to make a variable. ”

抜粋:: Apple Inc. “The Swift Programming Language (Swift 3.1)”。 iBooks

まぁ、読んでもらえればわかるのですが、簡単にいうと、

“let”は一度入れたら中身を変更できない入れ物。

“var”は何度でも中身を変更できる入れ物。

ということです。まぁ、“let”はC++でいうと“const”がついた変数であるという感じです。

なので、この二つの入れ物(以下、コンテナと呼びます)の違いを見てみましょう。


# var

まずは“var”

これをコンパイルして、ビルドした結果は次の通りです。

> Hello, World!
> Hello, Var!

ちゃんと書き換わっていますね。

# let

次に“let”

これをコンパイルしようとすると、

Swift Compiler Error Group
    Cannot assign to value: 'str_let' is a 'let' constant
        Change 'let' to 'var' to make it mutable

はい、コンパイルエラーです。意味としては、「“let”なんで入れられませんよ。入れたいなら“var”に変換してね。」


次に、コンテナの型を決定して宣言する方法。

ここでは例を示していきます。

 

# Double

Double型で定義しようとするには次のようにします。

上記どれでも問題なくDouble型になります。

 

# Integer

Integer型で定義しようとするには次のようにします。

ちなみに、

はDouble型をInt型に入れようとしていることになり、コンパイルエラーとなります。勝手なキャストはしてくれません。 (C++の感覚でキャストというワードを使っていました。Swiftのキャストでは概念が違うという指摘を頂いただきました。)

ですので、次のような式も許してくれません。

ですので、上記例は以下のようにします。

かなり厳格ですね。

 

# String

さて、次に文字列型。

まず、文字列型はダブルクォーテーション(“)で囲む必要があります。

注意しないといけないところは、シングルクォーテーション(‘)は、文字列型を表す記号ではないのでコンパイルエラーになります。違う型を文字列型にするには、明示的にキャストします。(C++の感覚でキャストというワードを使っていました。Swiftのキャストでは概念が違うという指摘を頂いただきました。)そして、文字列型を繋ぐには他の言語同様 (+)演算子 を使います。

 

その他に、文字列の間に数値もしくは文字列を入れたい場合は次のように、バックスラッシュ(\)を書き、丸括弧内に数値もしくは文字列またはそれらを格納しているコンテナを入れることもできます。

 


さて、次は配列型(array)と辞書型(dictionary)についてです。

“Create arrays and dictionaries using brackets ([]), and access their elements by writing the index or key in brackets. ”

抜粋:: Apple Inc. “The Swift Programming Language (Swift 3.1)”。 iBooks

上の抜粋内容からわかるように、角括弧([])を利用して表現します。

# Arrays

まずは、配列から。

 

空の配列型(文字列を持つ配列)を作りたい場合は次のように書きます。

 

角括弧内に書いてある型が配列内に入れる型を示します。そのため、整数型の配列を作りたい場合は次のようにします。

 

そして、いろんな型のものを許容した配列は次のように書きます。

 

次に、りんご、バナナ、メロンという文字列を持つ配列を作りたい場合は次のように書きます。

上記の配列で一番目の「りんご」から「みかん」 に変えるには次のようにします。

この出力結果は、

["みかん", "バナナ", "メロン"]

となります。

 

そして、上記の配列を空の配列にするには次のようにします。

この出力結果は、

[]

となります。

 

※これ以上の詳しい内容は別途「配列」というテーマで書きたいと思います。

 

# Dictionary

 

まず、空の辞書(キー:String型、値:Float型)はこのように書きます。

 

辞書型はキーがとても重要なので、キーに対しては“Any”を使えませんが、値に対しては次のように使うことができます。

 

次に、授業が月曜日は数学、火曜日は英語という辞書を作ります。それが次。

ちなみに、コンテナの名前には全角文字列も使用できるので、上記のように書いても問題ありません。

 

上記の月曜日を理科に変更するには次のようにします。

 

※こちらも詳しい内容は別途「辞書」というテーマで書きたいと思います。

 

 

さて、今日はこのくらいで。でも、う〜ん。真面目にブログにこうゆう内容を残していると時間が取られて仕方がないので、どうにかいい方法を考えなければ。


【改定履歴】

2017.04.16

指摘して頂いた「キャスト」というワードに、打ち消し線を引きました。

日常では、私はC++もしくはPythonを良く書いているため、

Swiftの概念とは書いてしまうことがあると思いますので、

今回のように指摘して頂けるとすごくありがたいです!

2017.04.15

コメントで指摘していただいた「var」が「val」になっている箇所の修正を行いました。

ご指摘して頂きありがとうございました!


【追記】

2017.04.15

「明示的なキャスト」という言葉についてQiitaで質問を頂きました。

 


MY SNS ACCOUNT

Instagram :  @programer_fumi

Twitter: @PROVINSITE

Twitter:@FumiProgrammer

もしよければフォローとイイネしてください♪

喜びます(〃艸〃)←

Sponsored Link





この記事が気に入ったら
いいね ! しよう

Tagged , , , , , , , , , , , , , , ,

About Fumi

FUMISITEの管理人。 職業は、プログラマー兼システムエンジニア。趣味は、プログラミング・散歩・スナップ写真撮影・美術鑑賞・映画鑑賞・読書など。
View all posts by Fumi →

3 thoughts on “Swiftをもう一度勉強してみた#1

  1. Qiitaの記事からのリンクで
    こちらのブログを拝見しました。

    「# 値に関して」の中のvalはvarのことでしょうか?
    「# var」のサンプルコードやその結果も含めて、valとvarが混在していたので質問させていただきました。

    私もQiitaでswift関連の記事を書いたりしているので
    もし宜しければ見てみてください。↓
    http://qiita.com/okuderap

  2. > 「# 値に関して」の中のvalはvarのことでしょうか?
    > 「# var」のサンプルコードやその結果も含めて、valとvarが混在していたので質問させていただきました。

    あぁ…見直しの時に見逃していました…

    ご指摘の通りです!
    valvarのことです😅

    久しぶりにSwiftを書いたのでダメですね(^^;)
    指摘していただいてありがとうございました!

    > 私もQiitaでswift関連の記事を書いたりしているので
    > もし宜しければ見てみてください。↓
    > http://qiita.com/okuderap

    おぉ!ぜひ参考にさせて頂きます!

  3. これからプログラミングをやってみようかなという私にはすごく参考になりました。ありがとうございます。
    今後もやって頂ければ嬉しいです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です