この記事の内容
個人的にSwiftの文法でとっつきにくい箇所を復習
コード例
sample.swift
import UIKit
// プロトコル
protocol ProductProtocol{
func show()
}
// 列挙型
// print(Product.Drink.rawValue)で"飲料品"と出力できる
enum ProductType:String{
case Drink = "飲料品"
case Food = "食料品"
case Book = "書籍"
case Other = "その他"
}
// 構造体
struct Product: ProductProtocol{
var name:String?
var price:Int?
var type:ProductType
init(_ name:String?, _ price:Int?, _ type:ProductType){
self.name = name
self.price = price
self.type = type
}
func show(){
// guardを利用したオプショナルバインディング
// (オプショナル型のデータをアンラップする)
guard let unwrappedName = self.name else{
return
}
guard let unwrappedPrice = self.price else{
return
}
print("商品名:\(unwrappedName)(\(self.type.rawValue)) 価格:¥\(unwrappedPrice)-")
}
}
// 継承は参照元の情報を更新する
// 構造体は参照元の情報を更新しない
// ProductType.Food は .Food とも書ける
var product1 = Product("商品1",1000,ProductType.Food)
var product2 = product1
product2.name = "商品2"
product2.price = 2000
product2.type = .Book
// nilが入った場合
var product3 = Product(nil,nil,.Other)
// show()を実行
product1.show()
product2.show()
product3.show() // show()のguard節内で処理が終了するため、出力されない
出力結果
商品名:商品1(食料品) 価格:¥1000-
商品名:商品2(書籍) 価格:¥2000-