LESSON 27 ・ クラス
クラスとコレクション
オブジェクトを配列で管理する
class Student {
var name: String
var score: Int
init(_ name: String, _ score: Int) {
self.name = name
self.score = score
}
func show() {
print("\(self.name): \(self.score)点")
}
}
let students = [
Student("Mary", 65),
Student("Mike", 90),
Student("Tom", 85)
]
for student in students {
student.show()
}
クラスを使うことで、複数の生徒の情報を一つの配列で管理することができます。
配列のメソッド
var a = [2, 1, 7, 5]
print(a)
a.append(3)
print(a)
a.removeAll { value in value == 1 }
print(a)
a.sort()
print(a)
Swiftの配列はクラスではなく構造体ですが、同じようにメソッドを持っています。
要素を追加したり、指定した要素を削除したり、小さい順に並べ替えたりすることができます。使うメソッド名は言語によって異なります。
文字列のメソッド
let a = "2,3,5,7"
let b = a.split(separator: ",")
let c = b.compactMap { value in Int(value) }
print(c)
Swiftの文字列もメソッドを持っています。
たとえば、splitメソッドを使えば文字列を分割することができます。
ここでは、"2,3,5,7"という文字列を,で分割しています。しかし、分割して得られた配列の要素は["2", "3", "5", "7"]のように文字列になっているので、これをさらにIntを使って整数に変換しています。
SwiftのInt(value)は、変換できない文字列を受け取る可能性があるため、Int?というOptionalの値を返します。compactMapを使うと、変換に成功した整数だけを新しい配列にまとめられます。これがSwiftでこの例を表す際に追加で必要になる型の説明です。
PRACTICE
演習問題
コードを自分で書いて実行してから、答えと解説を確認しましょう。
問題1
名前と点数を作成時に受け取り、showメソッドで表示できるStudentクラスを定義してください。二人分のオブジェクトを一つの配列にまとめ、すべての生徒のshowを呼び出してください。
答えと解説を見る
模範解答
class Student {
var name: String
var score: Int
init(_ name: String, _ score: Int) {
self.name = name
self.score = score
}
func show() {
print("\(self.name): \(self.score)点")
}
}
let students = [
Student("Mary", 65),
Student("Mike", 90)
]
for student in students {
student.show()
}
オブジェクトも配列の要素にできます。ループで一つずつ取り出すと、それぞれのオブジェクトに対してメソッドを呼び出せます。
問題2
[4, 1, 7, 3]に5を追加し、1を削除してから、小さい順に並べ替えて表示してください。
答えと解説を見る
模範解答
var numbers = [4, 1, 7, 3]
numbers.append(5)
numbers.removeAll { value in value == 1 }
numbers.sort()
print(numbers)
追加、削除、並べ替えを順番に行います。最後に表示される内容は[3, 4, 5, 7]です。
問題3
文字列"10,20,30,40"を,で分割し、すべての要素を整数に変換してください。変換した整数の合計を求めて表示してください。
答えと解説を見る
模範解答
let text = "10,20,30,40"
let parts = text.split(separator: ",")
let numbers = parts.compactMap { value in Int(value) }
var total = 0
for number in numbers {
total += number
}
print(total)
splitの結果は文字列なので、整数へ変換してから足します。4個の整数の合計である100が表示されます。