Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mobile Programming Control Flow 2
Search
yuichiro_takahashi
October 15, 2018
Technology
0
52
Mobile Programming Control Flow 2
MobileProgrammingの授業で使うスライドです!
yuichiro_takahashi
October 15, 2018
Tweet
Share
More Decks by yuichiro_takahashi
See All by yuichiro_takahashi
App Clip - in a nutshell
yuichirokato
0
350
巨大な機能を VIPER + MicroViewController でいい感じに実装した話
yuichirokato
1
810
Mobile Programming Protocol Extension
yuichirokato
0
83
Mobile Programming Protocol
yuichirokato
0
87
Mobile Programming enum
yuichirokato
0
170
Mobile Programming Optional
yuichirokato
0
140
Mobile Programming Struct
yuichirokato
0
130
Mobile Programming Initializer Beta
yuichirokato
0
120
Mobile Programming Inheritance
yuichirokato
0
150
Other Decks in Technology
See All in Technology
いかにして命令の入れ替わりについて心配するのをやめ、メモリモデルを愛するようになったか(改)
nullpo_head
7
2.6k
Amazon Q と『音楽』-ゲーム音楽もAmazonQで作成してみた感想-
senseofunity129
0
140
ZOZOTOWNの大規模マーケティングメール配信を支えるアーキテクチャ
zozotech
PRO
0
320
Telemetry APIから学ぶGoogle Cloud ObservabilityとOpenTelemetryの現在 / getting-started-telemetry-api-with-google-cloud
k6s4i53rx
0
150
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
120
Backlog AI アシスタントが切り開く未来
vvatanabe
1
130
2025新卒研修・HTML/CSS #弁護士ドットコム
bengo4com
3
13k
ロールが細分化された組織でSREと協働するインフラエンジニアは何をするか? / SRE Lounge #18
kossykinto
0
220
LLMをツールからプラットフォームへ〜Ai Workforceの戦略〜 #BetAIDay
layerx
PRO
1
980
10年以上続くプロダクトで今取り組んでること、取り組もうとしていること
sansantech
PRO
2
110
ユーザー課題を愛し抜く――AI時代のPdM価値
kakehashi
PRO
1
120
JAWS AI/ML #30 AI コーディング IDE "Kiro" を触ってみよう
inariku
3
370
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Typedesign – Prime Four
hannesfritz
42
2.7k
The Pragmatic Product Professional
lauravandoore
36
6.8k
Designing for Performance
lara
610
69k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Optimizing for Happiness
mojombo
379
70k
Speed Design
sergeychernyshev
32
1.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Building an army of robots
kneath
306
45k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Transcript
੍ޚߏจ2 MOBILEPROGRAMMING OCT, 15TH
ςΩετ ੍ޚߏจʂ ▸ iffor-inͳͲذ܁Γฦ͠ॲཧΛಛఆͷจʹߏԽͨ͠ͷ ▸ ϓϩάϥϜͷߏ ॱ࣍ɺબɺ෮ͷࡾͭʹྨ͞ΕΔ ▸ ͜ΕΒΛΈ߹Θͤͯϓϩάϥϛϯά͢Δํ๏ΛߏԽϓϩάϥ ϛϯάͱݺͿ
▸ ࠓճ܁Γฦ͠ͷߏจʹߜͬͯͬͯߦ͖·͢ ▸ ݴޠʹΑͬͯforwhileͱ͍͏ߏจ͕ଘࡏ͠ͳ͍(or ͨͩͷγ ϯλοΫεγϡΨʔ)
1. FOR-IN
ςΩετ FOR-INจ ▸ ܁Γฦ͠ॲཧΛ͢Δͱ͖ͷجຊతͳߏจ ▸ ߏจ for <ม> in <Array
or Range> { /* loop */ } ▸ Լهͷforͱ۠ผ͢ΔͨΊʹ for-inͱݺΕ·͢ ▸ for (int i = 0; i <= 10, i++) { /* loop */ } ▸ ͷΑ͏ͳߏจSwift 3.0 Ҏ߱ഇࢭ͞Ε·ͨ͠ ▸ ͜ͷΑ͏ͳforจΛC-style forͱݺͼ·͢ ▸ forจಛఆͷճ܁Γฦ͠ॲཧΛ͍ͨ͠ͱ͍͏Α͏ͳ߹ʹΑ͍͘·͢
ςΩετ ͳΜͰC-STYLE FOR ফ͑ͨʁ ▸ ؆ܿʹ͍͏ͱSwiftΒ͘͠ͳ͍͔Β ▸ CݴޠܦݧऀҎ֎ʹΘ͔Γʹ͍͘͠ ▸ ॳΊͯSwiftΛֶͿਓʹͱ֮ͬͯ͑ʹ͍͘
▸ ΠϯΫϦϝϯτɺσΫϦϝϯτʹΑΔ͋Δ͠ for (let i = 0; i <= 10; i++) { // loop... for (let j = 0; j <= 10;, i++) { print("it's a infinity loop!") } }
ͰͲ͏ͬͯ ϧʔϓͤ͞Δʁ
1-1.RANGE
ςΩετ RANGE(ൣғԋࢉࢠ)Λ͏ ▸ Ұ൪؆୯ͳΓํ ▸ switchͷ࣌ʹग़͖ͯͨΑ͏ʹ 0…10 ͱͯ͠ 0 ~
10·Ͱͷ Sequence(Array)Λ࡞ ▸ ͦΕΛfor-inͱΈ߹ΘͤΔ // Range let range = 0...10 for number in range { print("number: \(number)") }
ςΩετ FOR-IN STLIDE ▸ for-inͱ stlide Λ༻͢Δ͜ͱͰִؒΛ։͚ͯϧʔϓͤ͞Δ ͜ͱ͕Ͱ͖·͢ // 0͔Β10·ͰೋͭͱͼͰϧʔϓ
for number in stride(from: 0, to: 10, by: 2) { print("number: \(number)") }
1-2. ARRAY
ςΩετ ARRAYΛ͏ ▸ ͜ΕඇৗʹΦʔιυοΫεͳΓํ ▸ ఆٛࡁΈͷarrayʹରͯ͠for-inΛ͏ ▸ indexͰΞΫηε͢Δํ๏ʹൺ Array ͷൣғ֎ʹΞΫηε
ͯ͠͠·͏͜ͱ͕ͳ͍ͨΊ҆શ // Array let array = ["sunday", "monday", "tuesday", "wednsday", "thursday", "friday", "Saturday"] for number in array { print("number: \(number)") }
1-3.DICTIONARY
ςΩετ DICTIONARYΛ͏ ▸ ͜ΕׂͱΦʔιυοΫεͳΓํ ▸ ఆٛࡁΈͷdictionaryʹରͯ͠for-inΛ͏ ▸ key, value ͷܗʹͳ͍ͬͯΔͨΊ
for ͷҾೋͭʹͳΔ // Dictionary let dic = ["Animal": "Cat", "Fruit": "Banana"] for (key, value) in dic { print("key: \(key)") print("value: \(value)") }
2. WHILE
ςΩετ WHILEจ ▸ ܁Γฦ͠ॲཧΛ͢Δͱ͖ͷجຊతͳߏจ ▸ ߏจ while <ϧʔϓ݅> { /*
loop */ } ▸ whileจಛఆͷ݅ʹϚον͢Δ·Ͱ܁Γฦ͠ॲཧΛͨ͠ ͍࣌ʹ͏ var count = 0 var total = 0 while count < 5 { count += 1 total += count } print("count: \(count) total: \(total)")
3. ੍ޚసૹ
ςΩετ ੍ޚసૹ(CONTROL TRANSFER STATEMENTS)ʁ ▸ ੍ޚసૹ(Control Transfer Statements)ϓϩάϥϜͷॲཧ ΛΛ͋Δॴ͔ΒผͷॴʹҠ͢ػೳͷ͜ͱ ▸
ྫ͑continue break, switchͷfallthroughͳͲ͕͋Δ ▸ ؔͷreturn Τϥʔॲཧʹग़ͯ͘Δ throw ಉ͡ ▸ ࠓճbreakͱcontinueʹߜ͓ͬͯΛ͠·͢
3-1.BREAK
ςΩετ BREAK ▸ ଞͷݴޠಉ༷Swiftʹ break ͕͋Γ·͢ ▸ ಛఆͷ݅ͷ࣌ʹϧʔϓ͔Βൈ͚͍ͨ߹ʹbreakΛ༻͠ ·͢ for
i in 0...10 { // 11ճϧʔϓͤ͞·͢ɻ if i >= 3 { // i ͕ 3 Ҏ্ʹͳͬͨͱ͖ʹൈ͚Δ break } print(i) }
3-2. CONTINUE
ςΩετ CONTINUE ▸ ଞͷݴޠಉ༷Swiftʹ continue ͕͋Γ·͢ ▸ ಛఆͷ݅ͷ࣌ʹॲཧΛεΩοϓ͍ͨ͠߹continueΛ ༻͠·͢ ▸
breakͱҧ͍loopΛൈ͚Δ͜ͱ͋Γ·ͤΜ for i in 0...10 { if i % 3 == 0 { // 3ͷഒͷ࣌εΩοϓ continue } print(i) }
͓·͚
ςΩετ FORWHILEΛΘͳ͍ʁ ▸ ಄Ͱগ͓ͨ͠͠௨ΓݴޠʹΑͬͯforwhile͕ଘࡏ͠ ͳ͍Ͱ͢ ▸ ͰͲ͏ͬͯ܁Γฦ͠Λදݱ͢ΔͷͰ͠ΐ͏͔ʁ ▸ ํ๏͍͔ͭ͋͘ΓҰͭߴ֊ؔΛ͏ํ๏ ▸
͏Ұͭ࠶ؼؔΛ͏ํ๏Ͱ͢
͓·͚: ߴ֊ؔ
ςΩετ ߴ֊ؔʁ ▸ ؔΛҾʹͱͬͨΓɺؔΛฦؔ͢ ▸ ͍͜͠ͷͰࠓৄ͘͠આ໌͠·ͤΜ ▸ ܁Γฦ͠ͷͨΊͷ༗໊Ͳ͜ΖͰ map,
forEach ͳͲ͕͋ Γ·͢ ▸ for-inΛ͏ํ๏ΑΓ؆ܿʹॻ͘͜ͱ͕Ͱ͖·͢
ςΩετ ͨͱ͑ʁ ▸ ஈͷϦετʹରͯ͠ফඅ੫Λ͔͚ͨޙͷஈͷϦετΛੜ ͢ΔྫΛߟ͑·͢ ▸ ͜ΕΛfor-inͰॻ͘ͱ࣍ͷΑ͏ʹͳΓ·͢
ςΩετ ϥϯμϜʹੜͨ͠ͷഒΛٻΊΔ // ফඅ੫ let taxRate = 0.08 // ஈͷϦετ
let prices: [Double] = [10000, 9800, 34570, 29800, 114514] // ·ۭͣͷྻΛੜ var newPrices = [Double]()
ςΩετ ϥϯμϜʹੜͨ͠ͷഒΛٻΊΔ // ফඅ੫ let taxRate = 0.08 // ஈͷϦετ
let prices: [Double] = [10000, 9800, 34570, 29800, 114514] // ·ۭͣͷྻΛੜ var newPrices = [Double]() // for-inͰҰྻ͔ΒऔΓग़ͯ͠ɾɾɾ for price in prices { }
ςΩετ ϥϯμϜʹੜͨ͠ͷഒΛٻΊΔ // ফඅ੫ let taxRate = 0.08 // ஈͷϦετ
let prices: [Double] = [10000, 9800, 34570, 29800, 114514] // ·ۭͣͷྻΛੜ var newPrices = [Double]() // for-inͰҰྻ͔ΒऔΓग़ͯ͠ɾɾɾ for price in prices { let newPrice = price * taxRate newPrices.append(newPrice) // ·ͨྻೖΕΔʂ }
߇͑Ίʹݴͬͯ ໘
ςΩετ ߴ֊ؔΛͬͨ߹ ▸ ߴ֊ؔ(ࠓճmap)Λ͏ͱ࣍ͷΑ͏ʹॻ͘͜ͱ͕Ͱ͖· ͢ // ফඅ੫ let taxRate =
0.08 // ஈͷϦετ let prices: [Double] = [10000, 9800, 34570, 29800, 114514]
ςΩετ ߴ֊ؔΛͬͨ߹ ▸ ߴ֊ؔ(ࠓճmap)Λ͏ͱ࣍ͷΑ͏ʹॻ͘͜ͱ͕Ͱ͖· ͢ // ফඅ੫ let taxRate =
0.08 // ஈͷϦετ let prices: [Double] = [10000, 9800, 34570, 29800, 114514] let newPrices = prices.map { $0 * taxRate } // ʂ
None
͍ʂ
ςΩετ ͍ʂ ▸ ߴ֊ؔΛ͏ͱͱͯ؆ܿʹ͔͚·͢ ▸ ࠓճͬͨmapͱ͍͏ߴ֊ؔྻͷதʹॱ൪ʹड͚ औͬͨॲཧΛద༻͠ɺ৽͍͠ྻΛੜ͢ΔؔͰ͢ ▸ { $0
* taxRate } ͷ෦͕ྻͷதશͯʹద༻͞Εɺͦͷ݁ Ռ͕৽͍͠ྻͱͳΓ·͢ ▸ ߴ֊ؔΛ͏͜ͱͰ༨ܭͳίʔυΛল͖ɺͲΜͳॲཧΛ ͍ͨ͠ͷ͔ʁͱ͍͏෦ʹूதͰ͖·͢
ͪΐͬͱͬ ͯʂ (TWITTERฒײ)
ͦͦؔͬͯ ͳΜ͚ͩͬʁ