目次
プログラミングを学ぶ前に
この講座ではプログラミングについて、まったく経験のない初心者の方を対象に学習を進めていきます。
今回はSwift言語を対象にしてみました。
プログラミング言語を学ぶ前になぜその言語を学ぼうとするかをじっくりと考えてみてください。
いろいろな目的があると思います。 たとえばデベロッパー企業などに就職するうえでポートフォリオに加えたい、趣味でゲームアプリを作ってみたい、現在の仕事に活かしたいなど理由は様々あるでしょう。
理由は何であれ、おぼろげでも目的があれば意欲も高まります。
プログラミング言語の種類はとても多く、中途半端にあれもこれもと手を出すのは時間と労力の無駄になりますし、かえって習得の妨げにもなりかねません。
また、言語の種類は多くとも基本構文は多少の記述方法に違いはありますが、それは一種の方言のようなものですし、言語によって得意とする分野もありますので、あまり難しく考えずに言語の外観を知ることが大切です。
”言語の得意とする分野”と申しましたが、簡単に言ってしまえばライブラリや組み込み関数などが目的とする分野において豊富なことが挙げられます。
PythonなどはAI分野のライブラリが豊富ですし、PHPはWEBアプリの制作に役立つライブラリが多いです。
批判は甘んじますが、プログラミングは基本構文を理解できれば、ライブラリの使い方次第だといえますから、あとはご自身が実現したい機能を提供してくれるライブラリの使い方をその都度調べて組み込んでいく作業になります。
自分で関数を作ることもできますが、くれぐれも”車輪の再開発”などなされませぬように。
とにかくひとつの言語をしっかりと身につけることが他の技術を身につける上での最短の道になると筆者はおもっています。
この講座ではまったくの初歩から解説していきますのでご了承ください。
時々練習問題も出しますので、ぜひチャレンジしてみてください。
この講座は段階的にアプリ開発へと進んでいきます。
最初は物足りないかもしれませんが、じっくりと腰を据えて取り組んでください。
この講座は全くの無料ですので安心してくださいね。
途中から有料にするようなことはいっさい考えていません。
対象年齢は小学校高学年からお年寄りまでです(笑)
日本語が理解できれば大丈夫です。
初学者の皆さん、ぜひご一緒に学んでいきましょう。
学習に必要なもの
1.Mac(iMacもしくはMacBook)
2.iPhone
3.Xcode
4.インターネット環境
その他にもアップル社のデベロッパー登録等が必要な場合もあります。
とはいっても有料アプリをApp Storeに公開するのでなければ、上記4つを満たせれば学習はすすめられますので、ご安心ください。
Macとインターネット環境は必須になります。
iPhoneは実機によるテストに必要ですが、シュミレーターを使えば概ねテストはできるので必須というわけではありません。
1.Mac
iPhoneアプリの開発はWindowsではできません。
仮想環境を用意しての開発は可能ですが、ここでは取り扱いません。
講座で利用しているパソコンはiMacでオペレーティングシステムはMacOS Big Sur11.2.1です。
Xcode12.4を利用していますので、それが動作可能なものが必要になりますが、オペレーティングシステムのバージョンが10.15以上であれば問題ないとおもいます。
2.iPhone
すぐに必要ということにはなりませんが、講座が進行してくると実機にアプリをインストールしてのテストをする場合が出てくると思います。
このテストをAndroidではできません。
実機でのテスト以外ではXcodeにプレビュー機能がありますのでそちらを利用していきます。
3.Xcode
Xcodeはアップル社のiPhoneやMacなどのための統合開発環境です。
残念なことに2021/02現在では日本語対応にはなっていませんので、翻訳ツール等を駆使して学習するほか手はないようです。
この講座では説明などを加えながら理解ができるようにやっていきますので頑張ってみましょう。
プログラミングの学習ついでに英語の勉強ができるとポジティブに考えてみてください。
余談ですが、Xcodeは非常に大きなプログラムなので、MacBookが容量不足のためバージョンアップができないと警告がでることがあるかもしれません。
その場合は一度Xcodeをアンインストールしてからあらためてインストールすると解決できる場合があるようですので、試してみてください。
4.インターネット環境
Xcodeをダウンロード・アップグレードができた方には説明の必要はないとおもいますが、Appleのソフトウエアは概ね店頭での販売はされていませんので、インターネットに接続できる環境は必須になってきます。
特にXcodeのアップグレードは大容量のデータ通信を必要とします。
講座の進行について
本講座では大まかに以下の流れで進めていきますので、順次ページをスクロールして実行してください。
- 1・ 基本構文の学習
- 2・ iPhoneアプリ開発
- 3・ コンピューテッドプロパティとイニシャライザーについて
- 4・ クロージャを学ぶ
- 5・ プロトコルを学ぶ
- 6・ オプショナル型について
- 7・ 高度なアプリの開発
Playground(プレイグラウンド)
プレイグラウンドとは遊び場という意味ですが、遊びながら学ぶにはもってこいのプログラムなので利用してみましょう。
但しですがPlaygroundのBlankではアプリケーションを作成することはできません。
ここでは基本構文の書き方の練習場として利用します。
以前のXcodeではスタート画面にPlaygroundを選択できる画面があったのですが、2022/02現在のXcode 13の起動画面では選択できないので利用方法を説明します。
Xcodeを起動するとウェルカム画面が最初に表示されます。
この画面が開いたら、ディスプレイの左上のFile→New→Playgroundを選択しますと以下の画面に遷移します。
Blankを選択してNextをクリックします。
Save Asはプレイグラウンドの名前です。ご自由に名前をつけてください。
デフォルトではMyPlaygroundになっていると思います。
Tag:は未記入で大丈夫です。
Where:は保存先を指定します。
筆者の場合はデスクトップにswiftappというフォルダを作って保存していますのでこのようになっています。
読者の方も任意の場所にフォルダを作成しておいてください。
あとはCreateをクリックします。
以下のような画面が表示されたら準備完了です。
ではここまでできましたら、以下の課題を進めてみてください。
Swiftの基礎
1.四則演算
2.変数・定数
3.繰り返し処理
4.データ型
5.条件分岐
6.配列・辞書
7.関数
基本講座は上から順に解説していきます。
順次公開していきますので若干の遅延があるかもしれませんが、ご理解をお願いしたく思います。
四則演算
import UIKitとvar greeting = “Hello, playground”を削除してください。
そして新ためてprint(1 + 1)と入力してください。
入力が完了したら入力した文字の左下に実行ボタンが出ていますのでクリックしてください。
以下のようになっていたら成功です。
先ほど入力したところはエディタエリアになります。
プログラムの入力はここになりますので、覚えておいてください。
下に2と出力されている場所はデバッグエリアになります。
プログラムを実行するとデバッグされたのちに実行結果が表示されます。
さてprintと入力しましたが、これは組み込み関数の一つで()内の命令を表示する役目をしています。
元々からSwiftに組み込まれているものなのでわざわざ定義しなくても使えるわけです。
あとトークンという言葉があります。
printも一つの組み込み関数であり一つのトークンです。 p ri ntと入力してもコンピュータには理解できません。
スペースはトークンとトークンの間にいくら入れても問題なく処理できますが、できるだけ見やすい記述方法にしていきましょう。
下記のルールさえ守っていれば、自分なりの記述方法でもかまいません。
ですが他人が見て何をしようとしているのか解りやすい記述を心がけてくださいね。
覚えてほしいSwiftプログラミングの3つのルール
1 コードを記述する場合の原則として英字・数字・記号は半角を使う。
Swiftでは全角文字に対応していません。
2 トークンの間は半角スペースで区切る。
前述したとおりです。
3 エラーが出た場合は赤く表示されます。
文字でエラーのおおよその内容が出力されます。
変数・定数
ここからはプログラミングの醍醐味であります、変数と定数についてお話します。
その前にコメント文の書き方を説明しますね。
他人はもとより自分自身でさえ、コードを書いていくと膨大な量になることがあります。
そんな時自分が書いたコードが何をするために書かれたコードなのか? 解らなくなることがありますので、そのような時にコメントで説明書きなどできれば安心です。
コメントは簡単です。
// スラッシュ二つ以降の文章には全角文字でコメントが書けます。
いずれ説明するときがきますが、ブレークポイントなどでエラー文が出た箇所をコメントアウトして確かめたりもできるので重宝します。
最初はこまめにコメント文を入れるクセをつけておきましょう。
では本題に入っていきます。
変数
var n =5という記述に注目してください。
Pythonやphpでは変数の宣言は必要ありません。初期化も必要ないのでこのような記述は基本的にしません。
ですがC言語やJavaなどと同じくSwiftも宣言が必要な言語です。
これを静的型付け言語とも呼ばれます。
ここでは宣言の必要性について解説はいたしませんが、そういった仕様なのだとご理解ください。
変数という言葉を英語でVariable(ヴァリアブル)と言います。
その最初から3文字を取ってvarと使っています。
なんでも短縮系が好きな欧米人らしいですね。
この文は四則演算の掛け算をやっています。
・次は割り算をやってみましょう。
掛け算では*(アスタリスク)を使いましたが、割り算では/(スラッシュ)を使います。
変数の初期値を変更して試してください。
・次は除算をやってみましょう。
除算では%(パーセント)記号を使います。
余りがデバッグエリアに表示されています。
ここまでは一つの変数を作っての計算でしたが、今度はもう一つ変数を作って計算してみましょう。
変数はいくらでも作ることができますが、同一名の変数は使えません。
例えば
var n = 5
var n = 7
などです。
ですが、大文字と小文字は区別されますので
var n = 5
var N = 7
は使うことができます。
また変数の名前にはルールがあります。
・変数の先頭には数字を使うことはできません。
例えば var 123num = 5 のような場合などです。
・数学記号(+、ーなど)、矢印、ハイフン及び特殊記号は使えません。
・Swiftの予約語は使えません。
予約ご一覧 | |||
as | |||
associativity | break | ||
case | catch | ||
continue | convenience | ||
default | defer | ||
deinit | didSet | ||
do | dynamic | ||
dynamicType | else | ||
enum | extension | ||
fallthrough | false | ||
fainal | for | ||
func | get | ||
guard | if | ||
import | in | ||
indirect | infix | ||
init | inout | ||
internal | is | ||
lazy | left | ||
let | mutating | ||
nil | none | ||
nonmutating | operator | ||
optional | override | ||
postfix | precedence | ||
prefix | private | ||
protocol | Protocol | ||
public | repeat | ||
required | rethrows | ||
return | right | ||
right | self | ||
Self | set | ||
static | struct | ||
subscript | super | ||
switch | throw | ||
true | try | ||
Type | typealias | ||
unowned | var | ||
weak | where | ||
while | willSet |
この他にもありますが、概ねこのような予約語がありますので注意してください。
まあ変数に予約語を使おうとするとエラーが表示されますのであまり心配はありませんが。
変数名はエラーにならないものであれば自由に命名することができますが、Swiftでは慣習的にキャメルケースでの表記法で記述します。
UpperCamelCase(アッパーキャメルケースでの記述)やlowerCamel Case(ローワーキャメルケースでの記述)のようにラクダのコブのように文字を大文字で区切ります。
ローワーキャメルケースでの記述では先頭の文字は小文字でスタートです。
定数
定数も変数と同じように宣言が必要です。
命名ルールは変数と同じです。
初めに定数を使う意味ですが、変数は上書きができるので代入する値を書き換えることが可能です。 しかし、書き換えられてしまうと困ることがあります。
例えば後に実際にコードを書いてみますが、商品の値段から消費税を計算してその合計の税込み値段を算出するプログラムを書く場合に税の値は変動が滅多にないので、固定しておきたいなどの場合です。
ここでは少し複雑に見えるかもしれませんが、コメント文を見ていただければ何をやっているかが理解できると思います。
今までと違うのは定数letと:Double(型宣言)、salesTaxが出てきました。
上記のコードでは型変換を行わずに計算をできるように変数の型をDoubleに統一しています。
変数taxに:Dobleと記載しなくても値が小数点を含む場合は自動的にDouble型と認識されます。
デバッグエリアで計算結果が出ていますが、小数点を含む値になっていますね。
変数が数値型であっても異なる型同士の計算ではコンパイルエラーになりますので、型変換を行って型を一致させる必要があります。
では型変換を行なってもう一度計算させてみます。
消費税率taxを整数型Intに変換すると小数点以下が切り捨てられてしまいますので正しい結果が得られませんから、商品価格であるpriceを不動小数点型Doubleに計算式では変更しています。
どちらが良いというわけではありませんが、型をよく考えてコードを書くようにしましょう。
繰り返し処理
子供の頃に学校で九九を覚えましたが、ここではそれを利用して繰り返し処理を学んでみましょう。
繰り返し処理は指定した条件が完了するまで命令文を繰り返し実行するプログラムのことです。
その前に繰り返し処理なしで3の段を計算してみます。
これは疲れますね〜
計算だけとは限りませんが、繰り返し同じような処理をする場合にはfor文を使うとコードがすっきりします。
for 定数名 in 範囲 {
文
}
では5の段を計算してみましょう。
たった3行で完了です。
nが定数ということですが、for文では定数の宣言は必要ありませんというか宣言してはいけません。
この部分には定数しか書けない仕組みになっているので、letは不要です。
letを入れるとエラーになります。
for文は for n in 1…9 { print(5 * n) }と書くこともできますが、これでは見づらいので改行とインデント(文をずらす)を使って見やすくしています。
”コードは見やすく”はプログラマーの鉄則です。
ちなみに九九を全て計算するには二重ループを使うと便利です。
用語としてはネストと言います。
後日ネストについては詳述しますが、今回はコードのみをご確認ください。
”{“ と ”}”の間をブロックと言います。
ここでは変数を使っていませんが、変数を利用した場合このブロック内で変数の寿命はおしまいです。 これをスコープとも言います。
コンピュータはコードを上から順次処理していきます。
ループ処理が終わったのちの同じ変数名と初期値は別物として扱われます。
1から200までの全ての整数を合計するコードをPlaygroundで書いてください。
答えはこちらです。
データ型
Swiftでは多くのデータ型が用意されています。
これまでにも数値型を扱ってきましたが、ここではまず初めに文字列型から学習していきます。
月末にはよくこのようなアラートが財布から聞こえてきますが、それは別として文字列も変数に代入できるということを確認できました。
コンピュータにこれは文字列だよと伝えるためにはダブルクウォートで囲む必要があります。
参考までに数値と文字列の違いを見てください。
1行目は足し算をしています。
2行目は20と22の文字列を連結しています。
3行目は数式を文字列として表示しています。
・文字列補間
ちょっとした変数の値を変更するだけで文字列の中身を変更する方法を紹介します。
3行目にカーソルが残った状態になっていますが、気にしないでください。
print内の文字列を残金毎に表示する必要があった場合(筆者の財布にもあると便利ですが)その度に文字列を書き直すのは手間です。
特に数値だけを変更すれば良いだけですから、補間機能を使うのが得策です。
数値を入れる部分だけ\ ( )バックスラッシュと括弧内に変数を入れるだけで変数の中身を同時に表示できます。
携帯電話のバッテリー残量のアラート表示も同じような仕組みを使ってます。
条件分岐
次は条件分岐について学習していきましょう。
条件分岐を使うときというのは、ある条件を満たした場合にはこの処理を、満たさない場合はこの処理をといった具合に判断を行わせるときに必要になります。
条件分岐に使われる構文には”if文”や”swich文”などがあります。
if文
if 条件 {
文
}
ifは英文で”もし 〜ならば”という意味に使われます。
最初のトークンにifを使い、スペースの次に条件を入れ、波括弧”{“で囲ったブロック内に命令文を書きます。
今回は前出のフローチャートの右側を参考に条件と命令文を書いてみます。
変数RemainingMoneyの中には5000が入っています。
ifの後の条件式はRemainingManey <= 10000ですから5000 <= 10000ということですね。
つまり10000以下の場合が正しい(true)ので波括弧内の命令文が実行されます。
結果が正しくない場合は無視されます。
試しに変数の数値を変更してみて試してください。
!・<・=・> などの記号を比較演算子と呼びます。
比較演算子 | 意味 |
< | より小さい |
> | より大きい |
<= | 以下 |
>= | 以上 |
== | 等しい |
=== | 完全に適合 |
数学ではこのような記号の使い方をしませんが、イコール記号以外は数学上で使う記号がキーボード上に用意されていないのでこのような記法が使われています。
今回は変数に値を前もって入れてありますが、実際のプログラミングではユーザーからの入力を受けた結果を返す場合などに利用されたりします。
基本構文を学びながら”あれにも使えるな”という柔軟な思考力を身につけながら学んでください。
if文では条件の結果がブール値(trueまたはfalse)になる条件しか指定できません。
なので考え方を変えれば、ブール値で結果を返すことが可能なものであればなんでも指定できるということです。
難しく聞こえるかもしれませんが、正誤判定にできるものなら使えるということですね。
ではもう少し深く学んでいきましょう。
ここまでは正誤または真偽の結果、正しい場合だけを理解できましたが、そうでない場合の動作も必要になってきますし、そうでなければ分岐させる意味がありませんね。
もう少し条件を加味して学習していきましょう。
else(エルス) とは日本語に訳すと”さもなくば”とか”そうでなければ”を意味する単語です。
ではelseを含む書式を解説しましょう。
if 条件 {
文1
} else {
文2
}
先ほどまでのif文で作ったコードにelse文を加えてfalse(フォルス)つまり”偽”になった場合の結果を返すコードを加えてみましょう。
変数は偽になるように10000よりも大きな数値に変更しました。
現金なものですね〜
お金が無い時は外出するなと言い、有ればおみやげの催促とは・・・・・
とまあ冗談はさておき、偽の場合の分岐方法を概ね理解できましたでしょうか?
変数が固定されているため若干の違和感は否めませんが、条件の満たし方で結果が変わることを表現できることは色々な場面で応用できそうです。
前述のfor文で入れ子(ネスト)をする方法を学びましたが、if文も入れ子(ネスト)することができます。
では実際に上記のコードに加筆してコードを見てみましょう。
学習者の皆さんも是非コードを記述しながら確認してみてください。
if 条件1 {
文1
} else if 条件2 {
文2
}
このように条件分岐させる流れを制御フローとも呼びます。
フローとは流れを意味しますが、処理するということはプログラミングをする上で流れを把握し、どのように自身やユーザーの希望に沿って実現していくかという重要なことにも通じていきますので理解を深めて頂きたいと思います。
コンピュータはこのコードを上から順に処理を進行していきます。
それも非常に速くやりますので、コードをながめただけではイメージができませんが、プログラマーはいつもフローチャートを頭に思い描きながらコード、そして作りたいと思うアプリケーションをイメージして作成しています。
皆さんも今のうちから流れをイメージする訓練をしておきましょう。
swich文
swich 式 {
case 定数A :
文
case 定数B :
文
case 定数C :
文
}
配列・辞書
その日にやるべき行動を登録する ToDoアプリを作ったとします。
var job1 = “洗濯をする”
var job2 =”買い物に行く”
var job3 =”勉強をする”
ひとつひとつ変数を作ることもできますが、登録する行動が増えるとコードが冗長的になり面倒です。
これを使いやすくするためには配列が便利です。
配列
var 配列名 = [値1, 値2, 値3,・・・・・]
var(変数)の部分はlet(定数)のどちらかを選択できます。
配列名は変数の記述規則にそったものであれば自由に命名できます。
このデータのことを要素と言います。
上記の例を使って記述してみましょう。
var jobs = [“洗濯をする”, “買い物に行く”, “勉強をする”,]
では実際にプレイグラウンドを使って配列の中身を取り出してみましょう。
print(jobs[0])に注目してください。
print()の丸括弧内に要素を指定します。
角括弧内の数値は添字と呼ばれるもので、要素の並び順に従って自動的に指定されます。
注意したいのは0(ゼロ)から始まることです。
洗濯をする → 0
買い物に行く → 1
勉強をする → 2
といったように添字がつきます。
配列名[添字]
プレイグラウンドで実行結果はいかがでしたでしょうか?
添字にゼロを使った場合はデバッグエリアに”洗濯をする”が表示されているかと思います。
ここで要素に対応しない添字、例えば3を使うとエラーになります。
配列の取り出しに変数を利用することもできます。
変数名は任意で決めてください。
変数に入れる数値は添字にあたる整数値を入れてください。
以下のように試してみましょう。
いかがでしたか?
では要素の変更をしてみましょう。
配列名[添字] = 新しい要素
変数soejiの数値を0に変更してあります。
配列の下に要素の変更をしています。
では追加や削除をする場合はどうするか?ですが、ここではxcodeのメソッド機能を使っていきます。
・追加
配列名.apend(“追加の要素”)・・・・・> 配列の最後に追加される。
・削除
配列名.remove(at: 添字)・・・・・・> 指定した添字の要素が削除される。
まず要素を追加してみましょう。
”休憩する”を追加しました。
7行目で新しく追加した要素の添字を入れて出力しています。
次は削除してみましょう。
最初の配列要素0番目の”洗濯をする”を4行目で削除しています。
最初の0番目が削除されたので、繰り下がって”買い物に行く”要素が6行目のプリント文で表示されています。
辞書
配列にはデメリットもあります。
それは要素と添字の間に関連性が無いため配列の中身が解りづらいからです。
配列のコードが上記のように近くに記述されていれば確認は容易ですが、離れた場所にあると一々確認のために配列のコードを見なければならなくなります。
頻繁に利用せず、要素の数が少ない場合は配列で十分に機能させることができますが、そうで無い場面には辞書を使うと便利です。
var 辞書名 = [キー1:値1, キー2:値2, キー3:値3]
足の数を表示する辞書を作ってみました。
では要素を取り出してみましょう。
辞書名[キー名]
キーは配列の添字にあたります。
0という要素のキーはヘビになります。
デバッグエリアにOptional()(オプショナル)は学習が進む間に説明しますので、( )の中の数値に注目してください。
要素の変更は配列と同じですが、追加と削除は異なります。
6行目が追加するコードです。
辞書や配列の中身を全て表示して確認するにはprint(辞書名または配列名)で表示できます。
では一度辞書jobsの中身を見てみましょう。
10行目が辞書内のキーと要素を全て表示させるコードです。
次は削除して確認してみましょう。
12行目が削除するコードです。
nilとは”無い”という意味です。
読みは”ニル”で良いでしょう。他の言語ではnull(ナルまたはヌル)が多く使われていますがSwiftでは独特です。
配列の順番は自動的に要素に付けられますが、辞書では順序がありません。
辞書ではキーで自由に指定できますが、格納・取り出し・追加・削除にはキーを指定しなければならないという煩雑さがあります。
配列は添字を操作すれば簡単です。
どちらが優れているということでは無いですが、特性をよく理解して使用する場面を考えましょう。
国語70点、数学92点、英語68点の結果を辞書を使ってまとめてください。
その後、数学の点数を表示してください。
答えはこちらです。
関数
いよいよ基本構文の最後になる関数の解説になります。
これまでにif文・for文・配列等を学んできましたが、このような処理をひとまとめにしてしまう機能を関数が提供してくれます。
関数という言葉を数学的に理解するのは間違いです。
プログラミングにおいて関数は”ある物”を入れると処理をして結果をもたらしてくれる機能と単純に理解してください。
前述の定数で消費税込みの物の値段を算出することをやってみました。
その時の物の値段は変数に格納して計算をしましたが、これでは一々物の値段が変わるたびに記述し直さなくてはいけません。
しかし、物自体の値段以外は計算方法に変更はないのですから、関数化してみるのが最良でしょう。
func 関数名( ) {
文
}
func 関数名 部分が関数の宣言になります。
( )丸括弧の中は引数名と型が必要な場合に記入します。
各行について説明をしていきます。
1行目はfuncで関数の宣言をしています。
salesは関数名で( )丸括弧内は引数を指定しています。
引数とは実行する前に渡す値です。ここでは税を含まない商品価格を想定しています。
priceという仮の名前で、その型はDouble型ですよという意味です。
ここでダブル型にしているのは消費税が1.1と定数のダブル型になっているため、型をそろえないとエラーになってしまいます。
->右矢印はアロー演算子と呼ばれるもので、戻り値の型を指定するために必要になります。
ここではInt(インテジャー=整数)を指定しています。
戻り値の型はここでは税込み価格になりますので、小数点以下の数値は不要だからです。
アロー演算子についてはアプリ開発で説明します。
2行目はlet=定数でtaxという名前で型はダブル型、中身は1.1(税率)と宣言しています。
3行目はprice(引数)×tax(税率)の計算をさせて、それをlet(定数)のsalePriceに代入しています。
4行目はreturn(リターン)命令でsalePrice定数を整数に変換して計算結果を戻しています。
returnは予約語であり、Swiftに組み込まれている関数です。
ここまでが関数の本体になります。
関数は{ }波括弧で囲まれたブロック内に記述します。
7行目は関数を利用するコードです。
sales( )関数に引数を入れて、計算結果である戻り値をPriceという名前の変数を作って、その中に代入しています。
8行目は実際に結果を表示しています。
print文の( )丸括弧内に” “(ダブルクウォート)で文字列を記載し、計算結果であるPrice変数を\( )バックスラッシュ丸括弧内に記述して表示します。
バックスラッシュはエスケープシーケンスと呼ばれるもので、文字列などと区別するために使われる記号です。
オブジェクト指向について
1〜5行目までが関数の本体ですが、この場合は関数本体だけでは人間が結果を見ることができません。
オブジェクト指向を説明する時によく金型とそこから作り出される物を取り上げての説明が多いですが、ここでは関数の本体が金型にあたります。
そして7行目が金型に必要な中身を加えて”物”であるPriceを作り出しています。
少し跳躍して関数の説明をしてしまいました。
ここではラベルの説明や引数の複数指定については説明を省いていますので、じっくりと関数の学習をしたい方は他の文献を調べてみてください。
ちなみに関数本体の引数を人間が理解しやすい名前で用いる時にラベルを使いますが、省略するとSwiftは自動的にラベルを補完します。
1行目のfunc sales (price:Double)のpriceの前に同じようにpriceが補完されます。
つまり内部的にsales (price price:Double)のようになっています。(コード内には見えていません)
以上で基本構文の説明を終わります。
学習者の皆さんお疲れ様でした。
次回はアプリ開発へと進んでいきます。
let 定数名 = 初期値