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
関数を引数として渡す書き方のポイント
Search
Yoshikuni Kato
September 17, 2017
Programming
890
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
関数を引数として渡す書き方のポイント
iOSDC LT
https://iosdc.jp/2017/node/1454
Yoshikuni Kato
September 17, 2017
More Decks by Yoshikuni Kato
See All by Yoshikuni Kato
Fun of writing Unison
yoching
0
690
The Elm Architecture & Swift
yoching
0
1.3k
iOS developers community in Tokyo
yoching
0
950
Swiftエンジニアが海外のポジションに応募する
yoching
10
3.3k
App Architecture By Manual DI
yoching
0
910
Passing function to function arguments
yoching
0
950
「新規アプリの設計」を設計する
yoching
1
2.2k
App Architecture By Manual DI
yoching
2
630
App Architecture Sample
yoching
0
130
Other Decks in Programming
See All in Programming
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
170
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
150
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
150
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
430
5分で問診!Composer セキュリティ健康診断
codmoninc
0
580
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
650
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
280
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
900
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.7k
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
200
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
520
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
340
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.2k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
Designing Experiences People Love
moore
143
24k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
610
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
640
Navigating Weather and Climate Data
rabernat
0
400
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Transcript
ؔΛҾͱͯ͢͠ॻ͖ํͷϙΠϯτ Ճ౻༝܇ / @yoshikuni_kato iOSDC 2017 2017/09/17 1
Who am I? • Ճ౻༝܇ʢYoshikuni Katoʣ @yoshikuni_kato • iOSΤϯδχΞʢ2.5 yearsʣ
• Yahoo! Japan -> Φϋί • ʮϥδ͐ʯ͘Μ → • Interests: ઃܭ / FRP / Coordinator PaFern / UI࣮ 2
func%onalʹॻ͘ • func&onalʹॻ͘͜ͱ͕૿͖͑ͯͨ • FRP (RxSwi3 / Reac&veSwi3) • map
/ filter / reduce • iffor͕ݮΔ • એݴతʹॻ͚Δ 3
͜ͷLTͰγΣΞ͢Δ͜ͱ • ؔΛҾͱͯ͢͠߹ͷॻ͖ํ → গ͠ͷมߋ͚ͩͲɺΑΓએݴతʹݟ͑Δํ๏ • arrayͷmapΛྫʹ 4
ॻ͖ํ̍ - ΫϩʔδϟΛॻ͘ let array: [Int] = [1, 2, 3]
array.map { number -> Int in return number * 2 } 5
arrayͷmapͷఆٛ func map<T>(_ transform: (Element) throws -> T) rethrows ->
[T] • mapͷҾɿElementΛड͚औͬͯTΛฦ͢Ϋϩʔδϟ • ؔɺ໊લ͖ͷΫϩʔδϟͱଊ͑ΒΕΔ • ؔࣗମΛ͢͜ͱ͕Ͱ͖Δ 6
ॻ͖ํ̎ - ؔΛ͢ // ઌʹؔΛఆٛ func twoTimes(of number: Int) ->
Int { return number * 2 } let array: [Int] = [1, 2, 3] array.map(twoTimes) // ؔΛ͢ 7
ύϥϝʔλʔ͕ෳ͋Δ߹ func someFunc(a: Int, b: Int) -> String { return
"a = \(a), b = \(b)" } let array: [Int] = [1, 2, 3] array .map { number -> (a: Int, b: Int) in return (a: number, b: number) // Ұ୴λϓϧʹ͢Δ } .map(someFunc) 8
ΠχγϟϥΠβͷ߹ struct Sample { let number: Int init(number: Int) {
self.number = number } } 9
ॻ͖ํ̍ - ΫϩʔδϟΛॻ͘ let array: [Int] = [1, 2, 3]
array.map { number -> Sample in return Sample(number: number) } 10
ॻ͖ํ̎ - ؔΛ͢ let array: [Int] = [1, 2, 3]
array.map(Sample.init) • ΠχγϟϥΠβ(.init) = ͦͷObjectΛฦؔ͢ 11
ҧ͍ 1 array.map { number -> Sample in return Sample(number:
number) } array.map(Sample.init) 12
ҧ͍ 2 array .map { number -> Int in return
number * 2 } .map { number -> Sample in return Sample(number: number) } .map { sample -> Foo in return Foo(sample: sample) } array .map(twoTimes) .map(Sample.init) .map(Foo.init) 13
·ͱΊ • গ͠ॻ͖ํΛม͑Δ͚ͩͰɺΑΓએݴతʹॻ͚Δํ๏Λհ • ׆༻ྫɿModel͔ΒViewModelͷม ɹ model.map(ViewModel.init) • ݁ՌతʹɺॲཧΛؔʹΓग़͍ͯ͘͜͠ͱʹͳΔ •
ؔΛ͍ͯ͘͠ײ֮ʢखଓ͖ܕͷײ͔֮ΒঃʑʹΕΔʣ 14
ࢀߟ • Connec'ng View Controllers, Swi3 Talk1 • From Run'me
Programming to Func'ons, Swi3 Talk2 2 h$ps:/ /talk.objc.io/episodes/S01E19-from-run@me-programming-to-func@ons 1 h$ps:/ /talk.objc.io/episodes/S01E05-connec;ng-view-controllers 15
͓·͚ func someFunc(a: Int, b: Int) -> String { return
"a: \(a), b: \(b)" } // λϓϧͤͳ͍ let parameters = (a: 0, b: 0) someFunc(parameters) // !ʢswift3~ʣ // mapͩͱͤΔ let array: [(Int, Int)] = [(0, 0)] array.map(someFunc) // "ʢswift3Ͱʣ • ͳͥॻ͚Δͷ͔͔͍ͬͯΔਓ͕͍ͨΒڭ͍͑ͯͩ͘͞ 16