質問するログイン新規登録

回答編集履歴

2

コードの修正

2019/12/02 12:55

投稿

thyda.eiqau
thyda.eiqau

スコア2982

answer CHANGED
@@ -1,71 +1,66 @@
1
1
  Swiftは普段あまり触らないので、話半分くらいに見ていただきたいですが……
2
2
 
3
+ Dec 2, 2019 9:55pm追記: Macを触れる環境に来たので修正しました
4
+
3
5
  ```swift
6
+
4
7
  // MARK: -
5
8
  class Car {
6
- var name: String
9
+ var name: String
7
- var wheelsQty: Int
10
+ var wheelsQty: Int
8
11
 
9
- init(name: String) {
12
+ init(name: String) {
10
- self.name = name
13
+ self.name = name
11
- self.wheelsQty = 4
14
+ self.wheelsQty = 4
12
- }
15
+ }
13
-
16
+
14
- func run() {
17
+ func run() {
15
- print("Go ahead (self.name), zoom-zoom!")
18
+ print("Go ahead (self.name), zoom-zoom!")
16
- }
19
+ }
17
20
  }
18
21
 
19
22
  // MARK: -
20
23
  class Bike: Car {
21
- let hasSidecar: Bool
24
+ var hasSidecar: Bool
22
-
25
+
23
- init(name: String, hasSidecar: Bool) {
26
+ init(name: String, hasSidecar: Bool) {
24
- self = super.init(name: name)
25
- self.hasSidecar = hasSidecar
27
+ self.hasSidecar = hasSidecar
28
+ super.init(name: name)
26
- self.wheelsQty = 2
29
+ self.wheelsQty = 2
27
- }
30
+ }
28
31
  }
29
32
 
30
33
  // MARK: -
31
34
  class Truck: Car {
32
- let specialSigns: Array<String>
35
+ var specialSigns: Array<String>
33
-
36
+
34
- init(name: String, specialSigns: Array<String>) {
37
+ init(name: String, specialSigns: Array<String>) {
35
- self = super.init(name: name)
36
- self.specialSigns: specialSigns
38
+ self.specialSigns = specialSigns
39
+ super.init(name: name)
37
- }
40
+ }
38
-
41
+
39
- override run() {
42
+ override func run() {
40
- print("Vrrr, Vrrrr, Vrrrrrrom!!!!")
43
+ print("Vrrr, Vrrrr, Vrrrrrrom!!!!")
41
- }
44
+ }
42
45
  }
43
46
 
44
47
  // MARK: -
45
- class MainViewController: UIViewController {
48
+ class ViewController: UIViewController {
46
- let touring = new Bike(name: "Touring", hasSidecar: true)
47
- let hayabusa: Car = new Bike(name: "Hayabusa", hasSidecar: true)
48
- let canter = new Truck(name: "CANTER", specialSigns: ["危", "毒"])
49
- let elf: Car = new Truck(name: "ELF", specialSigns: [])
50
- var myFavoriteCar = some Car
51
-
52
- override func viewDidLoad() {
49
+ required init?(coder: NSCoder) {
53
- print("(touring.hasSidecar)") // -> true
50
+ super.init(coder: coder)
54
- print("(hayabusa.hasSidecar)") // -> ERROR
51
+ }
55
52
 
56
- touring.run() // -> Go ahead Touring, zoom-zoom!
53
+ let touring = Bike(name: "Touring", hasSidecar: true)
57
- hayabusa.run() // -> Go ahead Hayabusa, zoom-zoom!
54
+ let hayabusa: Car = Bike(name: "Hayabusa", hasSidecar: true)
58
- canter.run() // -> Vrrr, Vrrrr, Vrrrrrrom!!!!
55
+ let canter = Truck(name: "CANTER", specialSigns: ["危", "毒"])
59
- elf.run() // -> Go ahead ELF, zoom-zoom!
56
+ let elf: Car = Truck(name: "ELF", specialSigns: [])
60
57
 
61
- self.myFavoriteCar = touring
58
+ override func viewDidLoad() {
59
+ print("(touring.hasSidecar)") // -> true
60
+ print("(hayabusa.hasSidecar)") // -> ERROR
61
+
62
- printCurrentFavorite() // -> My favorite is Touring, this is a Bike
62
+ print("(canter.specialSigns)") // -> ["危", "毒"]
63
- self.myFavoriteCar = hayabusa
64
- printCurrentFavorite() // -> My favorite is Hayabusa, this is a Car
63
+ print("(elf.specialSigns)") // -> ERROR
65
- }
64
+ }
66
-
67
- func printCurrentFavorite() {
68
- print("My favorite is (self.myFavoriteCar.name), this is a (type(of: self.myFavoriteCar))")
69
- }
70
65
  }
71
66
  ```

1

typo修正とコメント追加

2019/12/02 12:55

投稿

thyda.eiqau
thyda.eiqau

スコア2982

answer CHANGED
@@ -1,3 +1,5 @@
1
+ Swiftは普段あまり触らないので、話半分くらいに見ていただきたいですが……
2
+
1
3
  ```swift
2
4
  // MARK: -
3
5
  class Car {
@@ -45,7 +47,7 @@
45
47
  let hayabusa: Car = new Bike(name: "Hayabusa", hasSidecar: true)
46
48
  let canter = new Truck(name: "CANTER", specialSigns: ["危", "毒"])
47
49
  let elf: Car = new Truck(name: "ELF", specialSigns: [])
48
- var myFavoriteCar: Car?
50
+ var myFavoriteCar = some Car
49
51
 
50
52
  override func viewDidLoad() {
51
53
  print("(touring.hasSidecar)") // -> true
@@ -63,7 +65,7 @@
63
65
  }
64
66
 
65
67
  func printCurrentFavorite() {
66
- print("My favorite is (self.myFavoriteCar.name), this is a (type(of: a))")
68
+ print("My favorite is (self.myFavoriteCar.name), this is a (type(of: self.myFavoriteCar))")
67
69
  }
68
70
  }
69
71
  ```