Swift学習③(codebelle)オプショナル型

【Swift を学ぶ目的】

Ios アプリを作成したい(家計簿アプリ、ゲーム)

・比較的簡単らしく、Xcodeがあればすぐに開発をはじめられるのでどんどんやりたい

 ドットインストールにもXcode の使い方(無償)とSwift 入門(有料)があったため 併用していきたい。

 

 環境:xcode 、paiza.io(ブラウザエディタ)

 教材:codebelle

【本ブログについて】

・codebelleの講義を参考に自分なりにアレンジしたコードを載せ理解を深めていく。

・又、当ブログは非商用でありcodebelle公式のブログではない。

・《ハック》(改造)は教材での学習のみでは納得できなかった部分について、コードを追加・削除してみたり、オリジナルのコードを作成し試行錯誤してみた箇所。

・《観察》は《ハック》についての考察や、教材もしくはググって参考にした事について、自分なりに理解を深める箇所。

 

 

 

◆ オプショナル型

《ハック》

let num = "123"

let poi = Int(num)

print(poi) // !を付けない //

print(poi!) //!をつける //

結果↓

Optional(123)

123

《観察》

オプショナル型のまま出力してみたら、Optionalの表示が。

 

文字列型を数値型に変換した場合、代入先にはnilが代入される。

【例】

let fruit = "アップル"

let bug = Double(fruit)

print(bug)

出力結果↓

nil

《ハック》

print(bug!)とすると、コンパイルエラー

 

型の宣言を省略しないと以下のとおりとなる。

let abc:Int? = Int("30")

let abcd:Int? = Int("さんじゅう")

let abcde:Int = Int(80.11)

オプショナル型には?を付ける。

又、オプショナル型である状態を、「変数がラップ(包む)された」と表す。

ラップ=?されたままでは数値型として使用できないため、アンラップ=!してあげる。

 

◆ 文字列をくっつける

【文字列同士】→文字列+ 文字列

【文字列と数値】↓

let kyori = 25

let kyoriStr = String(kyori)

let kmkm = "距離は"+kyoriStr+"メートルです"

print(kmkm)

文字列と数値をくっつける方法として↑はめんどい

もっと簡単な方法として↓

let 変数名 = "文字列(変数)文字列"

《観察》

¥はバックスラッシュと同じ意味

エディタ上ではきちんと表示される

 

《ハック》ガス代を表すコードを作る

let gas = 2.5

var time = 60

var result = Double(time) * gas

print("支払ったガス代は、(Int(result))円です")

出力↓

税込金額は、150円です

 

《観察》

前回?のブログにおいて、出力結果がポケモンみたいになっちゃったけとコレで大丈夫!

 

◆ 文字列型count

文字列型Stringには、文字列の文字数を数える機能がある。

「文字列型変数.count」とすることにより、変数に格納された文字数を数えることが

きる。

《ハック》

var hora = "私はホラッチョ"

var hora2 = str.count

print(hora2)

出力↓

7

文字列と数値がくっついた場合(#3-7)でも使える。

《ハック》

var hora = 20.5

var hora1 = "私はホラッチョNo.(hora)"

var coun = hora1.count

print(coun)

出力↓

14

《観察》

()はカウントされない。

又、counはInt型になるらしい。

《ハック》

例2のCcunに「:Double」をつけ少数にしてみたらコンパイルエラー.

main.swift:3:28:エラー:型

'String.IndexDistance'(別名 'Int')の値を指定された型 'Double'に変換できません

とでた。

《観察》

文字数が少数になることはないし、countを代入された変数は必ずIntなのだろうか。

「:Int」ならエラーは起きず「14」と表示された。

 

◆ 文字列の分解

 

分割する必要性と方法が分からない。検索する。

参照:

 

qiita.com

要約:文章などの文字列をスペースやピリオド毎に分割して個別に取り出せるらしい

参照先には3つのやり方があったが、2つめがわかりやすく、codebelle での学習と

じ内容だった。

(例1)

import Foundation

let str = "apple,banana,ringo"

let array = str.components(separatedBy:",")

print(array[0])//"apple"

print(array[1])//"banana"

print(array[2])//"ringo"

《観察》

定数str に代入された文字列を、ピリオド毎に区切ってくれる。

import Foundation を書かないと、エラーが起きてしまう↓

《Q》

import Foundation とは何なのか

《考察》

参照:

mynavi-agent.jp
「従来までのUIView やNSArray などiOS SDK に含まれるおなじみのUIKit やFoundation フレームワーク

フレームワークとは?

http://wa3.i-3-i.info/word12470.html

システム開発を簡素化できるプログラムをひな形」

高度な知識が必要な部分でもフレームワークの使用方法が分かっていれば簡単に開発ができるということか。

《まとめ》

Foundation とは、Swift で使用できるフレームワークのひとつ。

例1 の分割方法は、foundation を用いないと使用できないぽい。

【後ほど読ませていただきたいページ】

フレームワークとは?~自作のプログラムを「呼び出してくれる」共通プログラム~ | GiXo Ltd.

http://quesera2.hatenablog.jp/entry/2015/12/05/163855

分割の処理の結果、変数に代入された値は「配列」という複数のデータになっているという。


◆ -まとめテスト-

Int オプショナル型の記述方法について分かったこと。

文字列をInt のオプショナル型として計算に使いたいときは、計算式の中でInt 型に変

しアンラップする。

Int のオプショナル型をいちいち別の定数に代入する手間が省ける。

《ハック》

let goukei = 10

let tabeta = "2"

var age = goukei - Int(tabeta)!  //tabetaをint オプショナルに変換→アンラップ