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
56
Mobile Programming Control Flow 2
MobileProgrammingの授業で使うスライドです!
yuichiro_takahashi
October 15, 2018
Tweet
Share
More Decks by yuichiro_takahashi
See All by yuichiro_takahashi
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
370
App Clip - in a nutshell
yuichirokato
0
370
巨大な機能を VIPER + MicroViewController でいい感じに実装した話
yuichirokato
1
830
Mobile Programming Protocol Extension
yuichirokato
0
92
Mobile Programming Protocol
yuichirokato
0
98
Mobile Programming enum
yuichirokato
0
180
Mobile Programming Optional
yuichirokato
0
140
Mobile Programming Struct
yuichirokato
0
140
Mobile Programming Initializer Beta
yuichirokato
0
140
Other Decks in Technology
See All in Technology
Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例
lycorptech_jp
PRO
1
200
AI実装による「レビューボトルネック」を解消する仕様駆動開発(SDD)/ ai-sdd-review-bottleneck
rakus_dev
0
110
Datadog の RBAC のすべて
nulabinc
PRO
3
450
楽しく学ぼう!ネットワーク入門
shotashiratori
4
3.1k
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
420
モブプログラミング再入門 ー 基本から見直す、AI時代のチーム開発の選択肢 ー / A Re-introduction of Mob Programming
takaking22
5
1.3k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.2k
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
1
1.6k
Shifting from MCP to Skills / ベストプラクティスの変遷を辿る
yamanoku
4
820
決済サービスを支えるElastic Cloud - Elastic Cloudの導入と推進、決済サービスのObservability
suzukij
2
620
越境する組織づくり ─ 多様性を前提にしたチームビルディングとリードの実践知
kido_engineer
2
190
[2026-03-07]あの日諦めたスクラムの答えを僕達はまだ探している。〜守ることと、諦めることと、それでも前に進むチームの話〜
tosite
0
200
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
410
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
190
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.7k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
290
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Color Theory Basics | Prateek | Gurzu
gurzu
0
250
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
70
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ฒײ)
ͦͦؔͬͯ ͳΜ͚ͩͬʁ