こんにちは。
タイトルの通り、Swiftによるアプリケーション開発:入門編 という、Appleが出しているSwiftの入門書をやってみました。
iBooksから無料でダウンロードできます。
各章の簡単なまとめと解答をメモしておきたいと思います。
レッスン1 Playgroundの基本
Playgroundについての説明。演習問題はありません。
レッスン2 命名と識別子
定数は次のように宣言する。スペースを空けないとエラーが出る。
let numberOfCats = 10
宣言するときはわかりやすい名前をつけよう!
演習問題解答
let numberOfTickets = 150
let TicketPrice = 10
let RoomRentalFee = 50
let PosterCost = 40
let TotalTicketValue = numberOfTickets * TicketPrice
let TotalExpenses = RoomRentalFee + PosterCost
let TotalIncome = TotalTicketValue - TotalExpenses
チケットの値段を上げた
let TotalStrage = 8000
let UseStrage = 3000
let VideoStrage = 150
let minOfVideo = (TotalStrage - UseStrage) / VideoStrage
レッスン3 文字列
Swiftのエスケープ文字(通常の動作と異なるように指示する文字)はバックスラッシュである。また、このようなパターンを「エスケープシーケンス」と呼ぶ。その例として、プレースホルダがある。
プレースホルダ : \(name)
let name = "neko"
let greeting = "Hello \(name)"
演習問題解答
let TotalStrage = 8000
let UseStrage = 3000
let NeedStrage = 150
let minOfVideo = (TotalStrage - UseStrage) / NeedStrage
let Message = "You can take video for \(minOfVideo) min."
レッスン4 HelloWorld
xcodeのカスタマイズとprint関数について。
レッスン6 関数
同じ処理は関数を使って行わせよう!無限ループには気をつけよう。
レッスン8 定数と変数
変数は次のように宣言する。
var score = 5
演習問題解答(自信なし)
var total = 501
var round = 0
func game(){
round += 80
total -= round
print("Your score is \(total)!")
}
game()
game()
game()
レッスン9 型
型とは、整数値や文字列など、その値の性質(?)のことである。変数に値を代入すると、変数の型は自動的にその値の型になる。
また、次のように型を指定することもできる(型アノテーション)。
let num: Double = 20
演習問題解答
let diameter: Double = 2
let ensyu = diameter * pi
レッスン10 パラメータと結果
関数の引数と戻り値の記述法について。
引数には「引数のラベル」と「パラメータ名」の二つをつけることができる。引数ラベルがないときは、_ で明示することもできる。
func functionName(name1: Int, name2: Int) -> Int{
let total = name1 + name2
return total
}
func Hello(to name: String) {
print("Hello " + name)
}
printHello(to: "Yamada")
レッスン11 意思決定を行う
ブール値(true, false)とif文について。
演習問題解答
func isLeapYear(_ year: Int) -> Bool {
if number(year, isDivisibleBy: 4) {
if number(year, isDivisibleBy: 100) {
if number(year, isDivisibleBy: 400) {
return true
}else{
return false
}
} else{
return true
}
} else {
return false
}
}
レッスン12 インスタンスメソッドプロパティ
インスタンス!メソッド!プロパティ!
・・・プログラミングを始めてからずっと疎かにしていたところなので、今回わかった(つもり)になったことを図にしてみました。
正直間違っている気がするのでいつか修正するかもしれません・・・。
イニシャライザ:全ての型にあり、新しいインスタンスを作成するために使う
インスタンスの後にピリオド+メソッドで、メソッドを呼び出すことができる。プロパティも同様。
メソッドとプロパティは次のようにして宣言できる。
func hasPrefix(_ prefix: String) -> Bool
var isEmpty: Bool { get }
クイックヘルプやマニュアルを使うことでメソッドの定義などを知ることができる。
演習問題解答
まず初めに、与えられたコードが間違っている(?)ので、修正を行います。
- Sources > FreightElevator.swift の if currentWeight + load > weightCapacity の不等号の向きが逆なので<にする。
- mutating func ... となっている所の mutating の前に public をつける。
- 最後に元の場所に戻って、ricketyRope を変数にする。
let item1 = 50
let item2 = 500
let item3 = 5000
var ricketyRope = TreehousePulley(weightCapacity: 200)
var strongRope = TreehousePulley(weightCapacity: 2000)
ricketyRope.addLoadToBasket(loadWeight: item1)
if ricketyRope.canHandleAdditionalLoad(item1) {
ricketyRope.addLoadToBasket(loadWeight: item1)
}
if ricketyRope.canHandleAdditionalLoad(item1) {
ricketyRope.addLoadToBasket(loadWeight: item1)
}
if ricketyRope.canHandleAdditionalLoad(item2) {
ricketyRope.addLoadToBasket(loadWeight: item2)
} else {
strongRope.addLoadToBasket(loadWeight: item2)
}
if strongRope.canHandleAdditionalLoad(item2) {
strongRope.addLoadToBasket(loadWeight: item2)
}
if strongRope.canHandleAdditionalLoad(item3) {
strongRope.addLoadToBasket(loadWeight: item3)
} else {
print("too much")
}
後半はこちら↓
www.siketai.org