Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Enumはデキる子 ~ case .Success(let value): ~
Search
Takaaki Tanaka
May 30, 2016
Technology
2.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Enumはデキる子 ~ case .Success(let value): ~
AKIBA.swiftでの発表資料です
Takaaki Tanaka
May 30, 2016
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
現場に降りてきたAI フィジカルAIの技術スタックと実案件デモ #devio2026
kongmingstrap
0
280
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
690
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.6k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
520
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.4k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
1k
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
810
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
900
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.3k
Other Decks in Technology
See All in Technology
AI時代に求められる優秀なTechLeadの振る舞い
pospome
11
15k
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.6k
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
540
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
420
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
160
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
310
長い仕事を任せる (Workflows、クラウドセッション、Kiro Web) | 目指せ Kiro マスター 10
inariku
PRO
3
150
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
310
eBPF 簡介 2026 版
shunghsiyu
0
190
視野はAIに、視座は人に / ai-for-breadth-humans-for-perspective
nkzn
6
3.2k
evcc & Home Assistant
naltatis
0
400
TSKaigi Sendai 2026 - tsgo時代のTypeScript Playgroundはどう動くか
teamlab
PRO
0
110
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
770
Designing for Timeless Needs
cassininazir
1
550
Are puppies a ranking factor?
jonoalderson
2
4.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
930
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
510
Producing Creativity
orderedlist
PRO
348
41k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
470
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630
Leo the Paperboy
mayatellez
10
2.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Transcript
&OVNσΩΔࢠ ",*#"TXJGU dDBTF4VDDFTT MFUWBMVF d 5BLBBLJ5BOBLB
"CPVU.F w ాத໌ 5BLBBLJ5BOBLB w Ϋϥεϝιουגࣜձࣾ w !LPOHNJOHUSBQ w
J04%FWFMPQFS 4XJGU0CKFDUJWF$ w (ZB[4RVBSF(JU)VC
"HFOEB w &OVNʹ͍ͭͯ w &OVNʹ͍ͭͯ w &OVNʹ͍ͭͯ
&OVN w ϓϩάϥϜ্ɺҙຯͷ͋ΔΛྻڍͯ͠ఆٛ͢Δ͜ ͱ͕Ͱ͖Δ w 0CKFDUJWF$ɹˠɹ4XJGUͰେ෯ʹڧԽ͞Εͨ w Ή͠Ζ΄΅ผͱݴͬͯաݴͰͳ͍
&OVN enum { IMTypeCute, IMTypeCool, IMTypePassion }; w $$ 4UZMFɹ
&OVN typedef NS_ENUM(NSUInteger, IMType) { IMTypeCute, IMTypeCool, IMTypePassion }; w
0CKFDUJWF$ $PDPB 4UZMFɹ
&OVN typedef NS_OPTIONS(NSUInteger, IMType) { IMTypeCute = 1UL << 0,
IMTypeCool = 1UL << 1, IMTypePassion = 1UL << 2, IMTypeAll = (IMTypeCute | IMTypeCool | IMTypePassion) }; w 0CKFDUJWF$ $PDPB 4UZMFɹ
4XJGUͰͷ&OVNͷಛ w ୈҰڃΦϒδΣΫτʢpSTUDMBTTUZQFʣ w 3BX7BMVFʢ4USJOH*OU'MPBUʣ w ωετఆ͕ٛͰ͖Δ w ಠࣗͷϝιουΛఆٛͰ͖Δ w
$BTFʹUVQMF͕͑Δ
ୈҰڃΦϒδΣΫτ ʢpSTUDMBTTUZQFʣ w มʹ֨ೲՄೳ w σʔλߏʹ֨ೲՄೳ w ͦΕࣗମ͕ಠࣗʹଘࡏͰ͖Δ w ؔͷύϥϝʔλͱͯ͢͜͠ͱ͕Ͱ͖Δ
w ؔͷΓͱͯ͠ฦ͢͜ͱ͕Ͱ͖Δ
3BX7BMVF enum PeachBoySlave: Int { case Dog case Monkey case
Bird } w 4XJGU4UZMFɹ print(PeachBoySlave.Bird.rawValue) // 2
3BX7BMVF enum PeachBoySlave: String { case Dog = "Dog" case
Monkey = "Monkey" case Bird = "Bird" } w 4XJGU4UZMFɹ print(PeachBoySlave.Bird.rawValue) // Bird
3BX7BMVF guard let slaveType = PeachBoySlave(rawValue: "Bird") else { return
} w 3BX7BMVFʹଘࡏ͢Ε&OVNΛ࣮ମԽͰ͖Δ print(slaveType) // Bird
ωετ enum PeachBoySlave: String { case Dog case Monkey case
Bird enum Actor { case Grandpa case Grandma } } w &OVNͷఆٛʹ͞Βʹ&OVNΛఆٛ͢Δ͜ͱ͕Մ ೳ
ಠࣗͷϝιουఆٛ enum PeachBoyEnemy { case Oni case Boss func encount()
{ print("Enemy") } } w &OVNʹؔΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ
ܭࢉܕϓϩύςΟఆٛ enum PeachBoyEnemy { case Oni case Boss … var
count: Int { switch self { case Oni: return 10 case Boss: return 1 } } } w ܭࢉܕϓϩύςΟͷΈఆٛ͢Δ͜ͱ͕Ͱ͖Δ
5VQMF enum PeachBoyEnemy { case Oni(String, String) case Boss func
encount() { switch self { case Oni(let number, let colorName): print(Number + ": Oni " + colorName) case Boss: print("Boss") } } } w $BTFʹ5VQMFΛࢦఆ͢Δ͜ͱͰҟͳΔߏΛ࣋ͭ ϝϯόʔΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ
5VQMF let oni: PeachBoyEnemy = .Oni("1", "Red") oni.encount() w $BTFʹ5VQMFΛࢦఆ͢Δ͜ͱͰҟͳΔߏΛ࣋ͭ
ϝϯόʔΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ 1: Oni Red
"MBNPpSFͷ3PVUFSͰͷԠ༻ enum Router: URLRequestConvertible { case ItemSearch([String : AnyObject]) var
URLString: String { let baseURL = "http://shopping.yahooapis.jp/ShoppingWebService/V1/json/" switch self { case ItemSearch: return baseURL + "itemSearch" } } var Method: Alamofire.Method { switch self { case .ItemSearch: return .GET } } var URLRequest: NSMutableURLRequest { let request = NSMutableURLRequest(URL: NSURL(string: URLString)!) switch self { case .ItemSearch(let parameters): return Alamofire.ParameterEncoding.URL.encode(request, parameters: parameters).0 } }
"MBNPpSFͷ3PVUFSͰͷԠ༻ enum Router: URLRequestConvertible { case ItemSearch([String : AnyObject]) …
var URLRequest: NSMutableURLRequest { let request = NSMutableURLRequest( URL: NSURL(string: URLString)!) switch self { case .ItemSearch(let parameters): return Alamofire.ParameterEncoding. URL.encode( request, parameters: parameters).0 } }
δΣωϦΫεͷԠ༻ public enum Result<Value, Error: ErrorType> { case Success(Value) case
Failure(Error) } w UVCMFͱδΣωϦΫεΛࢦఆ͢Δ͜ͱͰޭ࣌ɺࣦ ഊ࣌Λฦ͢&OVNΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ
δΣωϦΫεͷԠ༻ func resultWithCode(code: Int?) -> Result<Int, NSError> { guard let
unwrapedCode = code else { return .Failure(NSError(domain: "MyApp", code: 0, userInfo: nil)) } return .Success(unwrapedCode) } w ΓΛ3FTVMUʹͨ͠߹
δΣωϦΫεͷԠ༻ let result = resultWithCode(200) switch result { case .Success(let
code): print(code) case .Failure(let error): print(error) } w ύλʔϯϚονͰൺֱ͢Δ͜ͱ͕Ͱ͖Δ
࣮ࡍʹ͏έʔε Alamofire.request(Router.ItemSearch(parameters)) .responseJSON { response in switch response.result { case
.Success(let value) : let json = JSON(value) guard let resultSet = json["ResultSet"].dictionary else { return } guard let resultsOfOnePage = resultSet["0"]?.dictionary else { return } guard let results = resultsOfOnePage["Result"]?.dictionary else { return } self.items = results.keys.map { Item(json: results[$0]!) } case .Failure(let error) : print("error: \(error)") } self.tableView?.reloadData() self.refreshControl?.endRefreshing() }
࣮ફฤ .PEFSO$PSF%BUBCZUSZ4XJGU
·ͱΊ w 0CKFDUJWF$͔ΒͷڧԽ͞Ε͍ͯΔ w աڈͷҨ࢈Λܕ҆શͳϓϩάϥϜੜ·ΕมΘΒͤ ΔώϯτʹͳΔ w δΣωϦΫεͱԠ༻͢Δͱͷൺֱॲཧ؆ܿʹه ड़Ͱ͖Δ