前回に続いて、Swiftの学習日記です。
教科書は「iPhoneアプリ開発講座 はじめてのSwift」という本です。
今日は第3章の「Swiftの基本的な文法」の「02 値の型」を学んでみます。
●第3章 Swiftの基本的な文法 02 値の型
目次
02 値の型
型注釈
基本的な型
String型
Int型
Double型、Float型
Bool型
文字列補間
型の機能
プロパティ
メソッド
イニシャライザ
●学習メモ
(p.31) 値の型
値の種類のことを型と言います。
型の名前のことを型名と言います。
プログラムの中で扱う値はすべて、いずれかの型に属しています。
(p.32) リテラル
コード内に直接記述する、値を表す文字のことをリテラルと言います。
いくつかの型にはリテラルが用意されており、型の種類によって書き方が決められています。
たとえは、""に囲まれた値は文字の値として扱われるリテラルです。
整数を記述した場合は整数の型として扱われます。これは整数の型のリテラルによって作られた値ということになります。
リテラルのイメージ
"こんにちは" → ""で囲っているから文字の値
200 → 整数だけだから整数の値
リテラルとは|literal|直値 − 意味 / 定義 / 解説 / 説明 : IT用語辞典
リテラル 【 literal 】 直値
リテラルとは、コンピュータプログラムのソースコードなどで、特定のデータ型による値を直接表記する際の書式。また、そのような書式に従って記載された値。
表記の仕方によってデータ型を識別できるよう、例えば文字列を表記する際は必ず前後を「"」で括る、といった書式が言語仕様によって定められている。各データ型のリテラルを、型名を先頭につけて「文字列リテラル」「整数リテラル」「日付リテラル」などと呼ぶ。
(p.32) 型注釈
変数や定数には、宣言時に型を指定することができます。
明示的に型を指定することを型注釈と言います。
構文 型注釈付きの宣言
var 変数名: 型名 = 値
let 定数名: 型名 = 値
「:」と型名の間には半角スペースを空ける慣習がありますが、空けなくてもエラーにはなりません。
変数や定数に型を指定できるのは宣言時のみです。
宣言後に型注釈を付けたり、後から変更したりすることはできません。
指定された型以外の値を代入することはできません。(エラーになる)
(p.33) 型推論
Swiftでは、変数や定数は必ず、いずれかの型に属していなければならないというルールがあります。
(型注釈を省略した宣言でも動作しますが)その理由は、Swiftが持つ型推論という機能が働いているためです。
型推論とは、代入された値の型を変数(または定数)に適用する機能のことです。
型を指定するコードが書かれていない場合でも、変数へ定数には必ず型が指定されているということです。
型推論(かたすいろん)とはプログラミング言語の機能の1つで、静的な型付けを持つ言語において、変数や関数の型を宣言しなくてもそれを導くのに使われた関数の型シグネチャなどから自動的に型を決定する機構のこと。
推論に失敗するとその時点でエラーを報告できるため、少なくとも誤った型を用いる事によるバグは回避できる。また、記述をアルゴリズムに集中できるのでプログラムの抽象度が上がるというメリットもある。
(p.34) 基本的な型
String型
String(ストリング)型は文字を表す型です。
文字列ということもあります。
(例) let message = "こんにちは!"
Int型
Int(イント)型は整数を表す型です。
Intは整数を表す英単語「Integer(インテジャー)」が省略されたものです。
(例) let price = 100
Double型、Float型
Double(ダブル)型とFloat(フロート)型は、いずれも実数を表す型です。
浮動小数点型とも言います。
Float型は32ビット長、Double型は64ビット長で値を扱います。
小数点付きの数値を書くと、Double型の値となるリテラルが用意されています。
Float型は、型注釈を書かないと指定することができません。
(例) let distance = 42.195
(例) let pai: Float = 3.14
Bool型
Bool(ブール)型は、true(真)かfalse(偽)のいずれかを表す型です。
trueまたはfalseしか代入することができません。
Boolは英単語「Boolean(ブーリアン)」が省略されたものです。
フラグとも言います。
trueまたはfalseのいずれかを書くと、Bool型となるリテラルが用意されています。
(例) let flag = true
ブーリアン型(ブーリアンがた、Boolean datatype)は、真理値の「真 = true」と「偽 = false」という2値をとるデータ型である。
ブーリアン、ブール型、論理型(logical datatype)などともいう。
2種類の値を持つ列挙型とも、2進で1ケタすなわち1ビットの整数型とも、見ることもできる。
ジョージ・ブール(George Boole, 1815年11月2日 - 1864年12月8日)は、イギリスの数学者・哲学者。
多くの仕事があるが、こんにちのコンピュータ科学の分野の基礎的な理論のひとつであるブール代数(ブール論理)が現代では広く知られている。
ブール型という名前は、ブール代数を発明した数学者、ジョージ・ブールの名前に由来しているんですね!
(p.35) 文字列補間
文字列の中には、String型以外の値を混ぜることができます。
この機能のことを文字列補間と言います。
文字列補間を使うと、String型以外の値(正確には「式の値」)を文字の中に混ぜ、1つの文字の値にすることができます。
文字列補間は、""で囲われた中に\(値)の形式で書きます。
「\」はバックスラッシュと言う記号です。
(例)
let price = 100 // Int型の定数を宣言
let message = "料金は\(price)円です" // 文字列補間を使って、priceを混ぜる
(参考)Macにおけるバックスラッシュ(\)の入力方法 - Qiita
Macで「\」(バックスラッシュ)を入力するには、optionキーを押しながら「¥」キーを押せばOKです。」
(p.35) 型の機能
型は、それぞれ型の種類に関する「機能」を持っています。
型の機能を使うと、値を元にさまざまなことができます。
たとえばString型の場合、「アルファベットをすべて大文字に変換する」や「文字列の中に文字を挿入する 」などといったような機能を持っています。
(p.35) 型プロパティ
値が持っている変数または定数のことをプロパティと言います。
プロパティは、メンバー変数(メンバー定数)とも言います。
どのようなプロパティを持つかは、その値の型により異なります。
構文 プロパティの値を取得する
値.プロパティ名
プロパティの値を取得するには、値や定数、変数の後に「.」(ピリオド)を書き、続けてプロパティの名前を書きます。
(p.37) 型メソッド
値が持っている関数をメソッドと言います。
メソッドはメンバー関数とも言います。
それぞれの型には、その型の種類に関連するメソッドが用意されています。
構文 メソッドの呼び出し
値.メソッド名()
メソッドを実行するには、値や定数、変数の後に「.」(ピリオド)を書き、続けてメソッドの名前を書きます。
そして、最後に()をつけます。
()の中は、メソッドの種類によっては値(引数)を入れる必要があります。
(p.38) イニシャライザ
型にはそれぞれ初期値というものが決められていて、イニシャライザという機能を使うことで、初期値の状態の値を作成することができます。
これを初期化(イニシャライズ)と言います。
構文 イニシャライザ
型名()
(例)
var str = String()
var int = Int()
var dpuble = Double()
var float = Float()
var bool = Bool()
Swiftのイニシャライザは、他のOOP言語の「コンストラクター」みたいなものだと思いましたが、Google検索してみると、若干動作が違うようです。
(参考)イニシャライザ - Swift による iOS 開発入門
Swift のクラス及び構造体で、オブジェクトを初期化する方法について説明します。
他の多くのオブジェクト指向言語での初期化の仕組みは、コンストラクタという名前で出てきますが、Swift のイニシャライザはちょっと違います。
Swift では初期化を行なうためのルールがいくつかあり、確実にオブジェクトを初期化するようになっています。
●まとめ
・型注釈で、型を指定する。
・プログラマーが型注釈を使わない場合は、Swiftが型推論で型を決めている。
・各基本型にはデフォルトで、プロパティー、メソッド、イニシャライザーが用意されている。