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
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
650
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.6k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
500
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.4k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
990
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
790
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
880
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.3k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
380
Other Decks in Technology
See All in Technology
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
130
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
150
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
400
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
0
120
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
540
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
480
[2026 Oracle Technical Deep Dive] OCI AI Resilience -OCIのセキュリティ対策機能をきちんと使いこなす- (2026年9月17日開催)
oracle4engineer
PRO
0
130
[2026 Oracle Technical Deep Dive] AI時代のアプリケーションを支えるCloud NativeとJava EEモダナイゼーション (2026年9月17日開催)
oracle4engineer
PRO
0
120
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
320
IR Today: Theory, Practice, and Agents
dtunkelang
0
350
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
410
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
3
960
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
55
13k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Into the Great Unknown - MozCon
thekraken
41
2.8k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
860
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
540
So, you think you're a good person
axbom
PRO
2
2.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
270
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
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 δΣωϦΫεͱԠ༻͢Δͱͷൺֱॲཧ؆ܿʹه ड़Ͱ͖Δ