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
わいわいOperator
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
giginet
PRO
September 12, 2018
Programming
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
わいわいOperator
https://iosdiscord.connpass.com/event/97606/
giginet
PRO
September 12, 2018
More Decks by giginet
See All by giginet
🀄️ on swiftc
giginet
PRO
0
610
15年メンテしてきたdotfilesから開発トレンドを振り返る 2011 - 2026
giginet
PRO
2
500
Claude Codeログ基盤の構築
giginet
PRO
7
4.7k
Inside of Swift Export
giginet
PRO
1
3.6k
Swiftビルド弾丸ツアー - Swift Buildが作る新しいエコシステム
giginet
PRO
0
3k
SwiftでMCPサーバーを作ろう!
giginet
PRO
3
490
Creating Intuitive Developer Tool in Swift
giginet
PRO
0
1.7k
Mergeable Libraryで 高速なアプリ起動を実現しよう!
giginet
PRO
2
8.6k
5分でわかるExplicitly Built Modules
giginet
PRO
2
1.9k
Other Decks in Programming
See All in Programming
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
Jetpack Compose Mechanisms
skydoves
3
820
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
SREの越境 / SRE Collaboration
y0hgi
2
310
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
370
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
560
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Deep Space Network (abreviated)
tonyrice
0
370
Design in an AI World
tapps
1
350
Scaling GitHub
holman
464
140k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
KATA
mclloyd
PRO
35
16k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
Θ͍Θ͍Operator Θ͍Θ͍swiftc #5 @giginet
iOSDCͷLT !
• Protocol Extension͔ΒᤈࢠΛੜ͢Έ͍ͨͳωλΛͬͨ
͜Εpostfix operatorͰͰ͖ͳ͍ͷʁ !
import Foundation import Peafowl postfix operator ᤈ extension Int {
postfix static func ᤈ(lhs: Int) -> Tile { return Tile(.character(lhs))! } } 1ᤈ
None
ແཧͦ͏
ύʔαʔΛಡΉ • https://github.com/apple/swift/blob/master/include/swift/AST/ Identifier.h#L94
/// isOperatorStartCodePoint - Return true if the specified code point
is a /// valid start of an operator. static bool isOperatorStartCodePoint(uint32_t C) { // ASCII operator chars. static const char OpChars[] = "/=-+*%<>!&|^~.?"; if (C < 0x80) return memchr(OpChars, C, sizeof(OpChars) - 1) != 0; // Unicode math, symbol, arrow, dingbat, and line/box drawing chars. return (C >= 0x00A1 && C <= 0x00A7) || C == 0x00A9 || C == 0x00AB || C == 0x00AC || C == 0x00AE || C == 0x00B0 || C == 0x00B1 || C == 0x00B6 || C == 0x00BB || C == 0x00BF || C == 0x00D7 || C == 0x00F7 || C == 0x2016 || C == 0x2017 || (C >= 0x2020 && C <= 0x2027) || (C >= 0x2030 && C <= 0x203E) || (C >= 0x2041 && C <= 0x2053) || (C >= 0x2055 && C <= 0x205E) || (C >= 0x2190 && C <= 0x23FF) || (C >= 0x2500 && C <= 0x2775) || (C >= 0x2794 && C <= 0x2BFF) || (C >= 0x2E00 && C <= 0x2E7F) || (C >= 0x3001 && C <= 0x3003) || (C >= 0x3008 && C <= 0x3030); }
None
·ͱΊ • operatorͰ͑Δจࣈίʔυܾ·ͬͯΔ • ϙϯυoperatorʹͰ͖Δ͕ɺϢʔϩoperatorʹͰ͖ͳ͍ • ଞʹ͋Δ͔
ΦϚέ • ࣮ṛશͯUnicodeʹׂΓͯΒΕ͍ͯΔ • ͜ΕΦϖϨʔλʔʹͰ͖ͳ͍ʁ
ແཧͩͬͨ
ΦϚέ2 • ṛΛఆ͢ΔCharacterSetͰ͢ import Foundation public let MahjongTileCharacterSet = {
() -> CharacterSet in let start = Character("").unicodeScalars.first! let end = Character("").unicodeScalars.first! let range: ClosedRange<Unicode.Scalar> = start...end return CharacterSet(charactersIn: range) }()