【Swift】文字列型と文字列の型変換

文字列の型名はString型。
書き方は文字列として扱いたい値をダブルクォーテーション(“”)で囲みます。
データ型の記事で軽く触れてますが、今回は少し深掘って書いていこうと思います。文字列の結合-演算子(+)を使ってString型の値を結合することが出来ます。

前回は 数値型の演算 について記事を書きました。

今回は 文字列型と文字列の型変換 について書いていこうと思います。

文字列型とは

文字列の型名は String型
書き方は文字列として扱いたい値をダブルクォーテーション で囲みます。
データ型 の記事で軽く触れてますが、今回は少し深掘って書いていこうと思います。

String型の宣言例

var greeting:String = "Hello." //値をダブルクォーテーションで囲む
var gereting2 = "Swift!" //型推論

print(greeting) //Hello.
print(greeting2) //Swift!

型推論 についてはこちらの記事で紹介しています。

文字列の結合

算術演算子 + を使って String型 の値を結合することが出来ます。

算術演算子 についてはこちらの記事で紹介しています。

文字列の結合例

var greeting:String = "Hello."
var greeting2 = "Swift!"

print(greeting) //Hello.
print(greeting2) //Swift!

var greeting3 = greeting + greeting2 //+で結合
print(greeting3) //Hello.Swift!

//または
var name = "hoge"
var message = "こんにちは" + name + "です"
print(message) //こんにちはhogeです

文字列と文字列を結合することが出来たと思います。

エスケープシーケンス

上記の結合方法の他に、エスケープシーケンスを使って文字列の中に変数や定数を埋め込む事も出来ます。埋め込みたい箇所に \( ) と入力して、 ( ) の中に変数や定数を入れる事で埋め込む事が出来ます。

バックスラッシュは Optionキー を押しながら ¥マーク。(Mac)

var name = "hoge"
var message = "こんにちは" + name + "です"
print(message) //こんにちはhogeです

//エスケープシーケンスを使って変数を埋め込む
var message2 = "こんにちは\(name)です" //埋め込みたい箇所に\()を入力して()の中に変数や定数を入れます
print(message2) //こんにちはhogeです

この方法でもプラス演算子 + を使った結合と結果は同じになります。

特殊文字をエスケープする

例えばダブルクォーテーションやバックスラッシュを で囲うとエラーになります
ダブルクォーテーションやバックスラッシュなど特殊文字と言われる文字を文字列として扱いたい時や、改行したい時などはエスケープする事で出力することが出来ます。

バックスラッシュはOptionキーを押しながら¥マーク。(Mac)
特殊文字エスケープシーケンス
ダブルクォーテーション\”
シングルクォーテーション\’
バックスラッシュ\\
タブ文字\t
改行\n

エスケープシーケンスはこの他にもたくさんあります。

エスケープ例

print("123\"45") //123"45 (ダブルクォーテーション)
print("123\'45") //123'45 (シングルクォーテーション)
print("123\\45") //123\45 (バックスラッシュ)
print("123\t45") //123 45 (タブ文字)
print("123\n45") //123    (改行)
                 //45

文字列の型変換

String型Int型Float Double型 に変換する事が出来ます。また、逆に Int Float Double型String型 に変換することが出来ます。
型変換することをキャストとも言います。

型名() と書いて、( ) の中に変換したい変数や定数を入れると変換する事ができます。

文字列型から数値型へキャスト

String型 の変数を他の型にキャストする例

var a = "12345"
print(type(of: a)) //String

//StringをIntにキャスト
var b = Int(a) 
print(type(of: b)) //optional<Int>

//StringをFloatにキャスト
var c = Float(a)
print(type(of: c)) //Optional<Float>

//StringをDoubleにキャスト
var d = Double(a)
print(type(of: d)) //Optional<Double>

これで String型 を数値型に変換できましたが、実行結果を見てみると頭の所に optional と付いています。この optional と言うのは、変換しようとしている値は nil(空) の可能性がある場合に optional となります。
nil とは、値が入っていない空の状態を表しています。
nil じゃないよ!と明示するには、 アンラップ をする事で出来ますが、 optional型 や、アンラップ についてはまた今度記事を書こうと思います。とりあえずキャストは出来るので今回はこのまま進めます。

数値型から文字列型へキャスト

さっきの逆パターン

//IntをStringにキャスト
var e = 12345
print(type(of: e)) //Int
var f = String(e)
print(type(of: f)) //String

//DoubleをStringにキャスト
var g = 12.345
print(type(of: g)) //Double
var h = String(g)
print(type(of: h)) //String

これでキャスト出来たと思います。

String-escapeコードimg2

キャストする時の注意点

変換できなかった場合は nil が返される。
nil とは、値が入っていない空の状態を表しています。

nil が返される( 変換出来ない )例

var a = "123.45" //String
var b = Int(a)
print(b) //nil
print(type(of: b)) //Optional<Int>

これは、 String型 の変数を Int型 にキャストしようとしている例です。文字列に “123.45” と少数点が入っています。 Int型 は少数を扱えないのに Int型 にキャストしようとしているので、結果 nil が返されてしまいます。
文字列に小数点が含まれた値をキャストしたい場合は、 Float型 か、Double型 を指定しましょう。

var a = "123.45" //String
var b = Int(a)
print(b) //nil
print(type(of: b)) //Optional<Int>

//少数を扱えるFloat型にキャスト
var c = Float(a)
print(c) //Optional(123.45)
print(type(of: c)) //Optional<Float>

//数字の文字列じゃない場合、数値型に変換出来ず値はnilになります
var d = "abc"
var e = Int(d)
print(e) //nil
print(type(of: e)) //Optional<Int>
String-escapeコードimg

以上 文字列型と文字列の型変換 についてでした。

次回は 真理値型と比較演算子 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/

【Swift】数値型の演算

数値型は大きく分類すると整数型、浮動小数点型に分けられます。
複数のデータを算術演算子を使って演算して、別のデータを生成できます。
演算子のことをオペレータ、演算するデータのことをオペランドとも言いますね。まずは算術演算子の種類を見ていきましょう。

前回は データ型 について記事を書きました。

今回は 数値型の演算 について書いていこうと思います。

数値型の演算とは

数値型は大きく分類すると整数型、浮動小数点型に分けられます。
複数のデータを算術演算子を使って演算して、別のデータを生成できます。
演算子のことをオペレータ、演算するデータのことをオペランドとも言いますね。まずは算術演算子の種類を見ていきましょう。

算術演算子の種類

演算子意味記号
+足し算(加算)プラス
引き算(減算)マイナス
*掛け算(乗算)アスタリスク
/割り算(除算)スラッシュ
%割り算の余り(剰余)パーセント

上記の記号を使って演算していきます。

演算例

+ (加算)

let one = 1 //Int
let two = 2
let three = 3
let four = 4
let five = 5
let six = 6
 
var answer = one + two //演算した結果をanswerに代入

print(answer) //3
print(type(of: answer)) //Int

Int型 の定数を宣言して、演算した結果を 変数 answer に代入しています。ただ 12 を足し算してるだけなので answer には 3 が代入されます。
定数 onetwo は型を定義していないので型推論によって Int型 となり、 Int型 同士の演算なので answer も型推論によって Int型 となります。

※ 演算する時は同一の型同士でなければ演算できないので注意。

(減算)

let one = 1 //Int
let two = 2
let three = 3
let four = 4
let five = 5
let six = 6

var answer2 = four - three

print(answer2) //1
print(type(of: answer2)) //Int

* (乗算)

let one = 1 //Int
let two = 2
let three = 3
let four = 4
let five = 5
let six = 6

var answer3 = five * six

print(answer3) //30
print(type(of: answer3)) //Int

/ (除算)

let one = 1 //Int
let two = 2
let three = 3
let four = 4
let five = 5
let six = 6

var answer4 = six / three

print(answer4) //2
print(type(of: answer4)) //Int

//Int型の演算する際、割り切れない割り算は少数が切り捨てられる
var answer5 = five / two

print(answer5) //2
print(type(of: answer5)) //Int

//小数点以下も扱う場合はFloat型かDouble型で宣言しましょう
let floatFive:Float = 5
let floatTwo:Float = 2

var answer6 = floatFive / floatTwo

print(answer6) //2.5
print(type(of: answer6)) //Float

% (剰余)

let one = 1 //Int
let two = 2
let three = 3
let four = 4
let five = 5
let six = 6

var answer7 = three % two
print(answer7) //1
print(type(of: answer7)) //Int
//3を2で割ると1余るので剰余は1になります
//剰余はInt型以外で演算しようとするとエラーになります

※ 除算 / をする時は型と、小数点以下も扱うのかどうかなど注意が必要です。
※ 剰余 %Int型 以外で演算しようとするとエラーになります。
以上 数値型の演算 についてでした。

次回は 文字列型と文字列の型変換 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/

【Swift】データ型

データ型とは、Swiftに限らずプログラムで使う全てのデータには型というものがあり、変数や定数などを宣言する時にそのデータはどの型に分類されるのかを宣言するためのものです。

前回は 変数・定数 について書きました。

今回は データ型 について書いていこうと思います。

データ型とは

データ型とは、Swift に限らずプログラムで使う全てのデータには『型』というものがあり、変数や定数などを宣言する時にそのデータはどの型に分類されるのかを宣言するためのものです。今回はよく使う代表的な型をいくつか書いていきたいと思います。

データ型の種類

型名和訳
String文字列型var a:String = “hoge”
Int整数型var a:Int = 1
Float
Double
浮動小数点型var a:Float = 3.14
var a:Double = 3.14
Bool真偽値型var a:Bool = true

細かく分類すればもっとありますが、よく使う代表的な型はこのあたりかなと思います。
Int Float Double は、数値型とも言われます。

型推論とtype(of:)関数

型推論とは

型推論とは型を明示しないで宣言した場合、入れた値によって型が予測されて自動的に決められる機能です。前回の記事、変数・定数で書いている変数や定数はこの型推論によって自動的に型が決められています。

type(of:)関数 とは

type(of:)関数 の引数に変数や定数などを入れて実行すると、何型かを返してくれる関数です。

型を明示した宣言例と型推論を用いた宣言例

変数、定数名の後ろにコロン : を入力してから型名を入力して、その型に合った値を代入します。

変数、定数名:型名 = 値

//型推論
変数、定数名 = 値
print(type(of:変数や定数))

print関数 の引数に type(of: 変数名や定数名 ) とすると Xcode のコンソールに何型か出力されるので、調べたい時などによく使ってます。

String型

var a:String = "hoge" //文字列

//型推論
var a = "hoge"
print(type(of: a)) //String型

※ 文字列は、ダブルクォーテーション で文字列を括ります。

Int型

var b:Int = 1 //整数

//型推論
var b = 1
print(type(of: b)) //Int型

Float型 Double型

var c:Double = 3.14 //浮動小数点
print(type(of: c)) //Double型

//型推論
//少数の型推論はデフォルトでDouble型に推論するので、Float型にしたい場合は明示が必要.
var d = 3.14 
print(type(of: d)) //Double型

var e:Float = 3.14 //Float型は明示しないとDouble型になる。
print(type(of: e)) //Float型

FloatDouble はどちらも浮動小数点型ではあるものの、桁の精度が違います。
Float6 桁Double15 桁の精度ですが基本的には Float で問題ないかと思います。桁が多くて計算ズレる!みたいな時に Double に代えればいいです。

Bool型

//Bool型はtrueかfalseの2種類
var f:Bool = true //真偽値

//型推論
var g = true //Bool型
var h = false //Bool型

Bool型 は on/off の切り替えだったり、条件分岐する時などによく使われます。

以上 データ型 についてでした。

次回は 数値型 の演算について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/

【Swift】変数・定数

変数・定数とは、プログラムを書いていく中で使用するデータ(値)を保管するためのもので、書籍や動画教材などでは、値を保管しておく”箱”と例えられている事が多いかと思います。

変数・定数とは

変数・定数とは、プログラムを書いていく中で使用するデータ(値)を保管するためのもので、書籍や動画教材などでは、値を保管しておく”箱”と例えられている事が多いかと思います。プログラムの中で何度も使用する値や場合によって変動する値は、この箱を使って管理します。

変数・定数の特徴

  • 名前を付ける事ができる
  • 数値や文字列などの値を入れる事ができる
  • 変数は、一度入れた値を変更する事ができる
  • 定数は、一度値を入れるとそれ以降変更できない

新しく変数・定数を作る時の事を”宣言“と言い、変数や定数に値を入れる事を”代入“と言います。
定数は、一度定数の宣言をして値を代入するとそれ以降値を変更出来ないので、宣言以降に値が変更する可能性が無い事が保証されている時に使います。

変数・定数の宣言例

var 変数名 = 値 
let 定数名 = 値

※ 新しく変数や定数を宣言する時、変数であれば var キーワード、定数であれば let キーワードを頭に付けます。

命名規則について

変数や定数、関数やクラスなどに名前を付ける時のルールがあります。別に従わなくてもプログラムは動きますが、Swift言語では推奨されているルールです。

命名規則
変数キャメルケースhelloSwift
定数キャメルケースhelloSwift
関数キャメルケースhelloSwift
引数キャメルケースhelloSwift
クラスアッパーキャメルケースHelloSwift
構造体アッパーキャメルケースHelloSwift
列挙体アッパーキャメルケースHelloSwift

※ キャメルケースは複数の単語をつなげる場合、最初の単語は小文字で始めて次の単語から最初の文字を大文字にします。

※ アッパーキャメルケースは複数の単語をつなげる場合、各単語の最初の文字を大文字にします。

宣言〜アクセス

変数・定数の宣言をして値にアクセスしてみます。

変数 a を宣言して値を代入する

var a = 1

変数を宣言する時は頭に var キーワードを付けます。
上の例は、変数名 a という箱に数字の 1 を代入しています。

print関数 を使って 変数 a に代入されている値にアクセス

アクセスする方法は色々ありますが、変数 a の値を確認するだけなので今回は print関数 を使います。
print関数 を使うと、Xcode のコンソール( Xcode下部 )に入っている値を出力してくれます。


print関数の引数にアクセスしたい変数名を入れて実行

a にアクセスして中に何が入っているか確認してみます。

var a = 1
print(a) //1と出力される

Xcode のコンソールに出力されて、入っている値が表示されているはずです。

変数 a の値を変更する

a の値を 2 に変更してみます。

var a = 1
print(a) //1

a = 2 //違う値を代入。
print(a) //2

変数 a はすでに宣言しているので、頭に var は付けない。
コンソールに 2 と表示されているはずです。
これで変更できました。

定数 b を宣言して値を代入する

let b = 1
print(b) //1と出力される

定数を宣言する時は頭に let キーワードを付けます。

定数 b の値を変更しようとすると…

let b = 1
print(b) //1

b = 2 //これは定数なので値は変更できないというエラー

定数は、一度値を入れるとそれ以降変更できません。
じゃ あ変数だけで良くね?となりそうですが、意図せず値が変わってしまうリスクを防ぐ事ができるし、予期せぬ挙動やバグ回避にも繋がるので変わる事がない値変えたくない値を代入する時は定数を使いましょう。
以上 変数・定数 についてでした。

次回は データ型 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/