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
Swift Weekly 7/26
Search
Johnlin
July 26, 2016
Programming
1
170
Swift Weekly 7/26
Johnlin
July 26, 2016
Tweet
Share
More Decks by Johnlin
See All by Johnlin
用 MLIR 實作 一個 Ruby IR (intermediate representation)
johnlinvc
0
130
Unearth Ruby builtin Gems 發掘 Ruby 的內建 Gems
johnlinvc
0
260
Ruby 型別檢查工具簡介
johnlinvc
0
470
Swift Actor 實作探索
johnlinvc
0
160
用 mruby 來寫跨平台工具
johnlinvc
0
77
Actor model 簡介
johnlinvc
0
190
一起玩 Helm 3
johnlinvc
1
120
為什麼 App 卡卡的
johnlinvc
2
1.2k
如何使用 byebug 來除錯 Ruby 程式
johnlinvc
0
200
Other Decks in Programming
See All in Programming
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
1.1k
Agentic Coding: The Future of Software Development with Agents
mitsuhiko
0
130
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
1
7.3k
AIともっと楽するE2Eテスト
myohei
8
3k
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
ucchiii43
0
180
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
8.7k
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
200
「App Intent」よくわからんけどすごい!
rinngo0302
1
100
生成AI時代のコンポーネントライブラリの作り方
touyou
1
290
Claude Code派?Gemini CLI派? みんなで比較LT会!_20250716
junholee
1
530
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
11
1.3k
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
300
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
35
6.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
520
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
For a Future-Friendly Web
brad_frost
179
9.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
KATA
mclloyd
30
14k
Thoughts on Productivity
jonyablonski
69
4.7k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
340
The Language of Interfaces
destraynor
158
25k
Transcript
Swift पใ 7/26 John Lin @johnlinvc
From the core • Swift 3.0 ࠷৽࣌ఔ • Swift open
source ൛։࢝ࢧԉ Playground
Swift 3.0 ࠷৽࣌ఔ • 7/27 ੋड breaking change త࠷ޙҰఱ •
7/27 ။౼ཁዎኄ႔ཧೝՄୠؐᔒመ࡞తमվ • 8/1 ։࢝౼ Swift 4 • Swift 3 త ᚙߦؐᔒ֬ఆɼୠҰఆࡏ 7/27 ೭ޙ
Evolution • SE-0077 վਐӡࢉࢠએࠂ • SE-0110 ეᄸҰTuple ᢛ ଟჩᏐവᏐ •
SE-0111 വᏐతჩᏐඪតෆ࠶ੋܕผతҰ෦㟨 • SE-0113 ුᴍᏐ৽⃧ਐҐ/ࣺڈവᏐ
SE-0077 վਐӡࢉࢠએࠂ // Before infix operator <> { precedence 100
associativity left } // After precedencegroup ComparationPrecedence { associativity: left higherThan: LogicalAndPrecedence } infix operator <> : ComparationPrecedence
SE-0110 ეᄸҰTuple ᢛ ଟჩ ᏐവᏐ let fn1 : (Int, Int)
-> Void = { x in // The type of x is the tuple (Int, Int). } let fn2 : (Int, Int) -> Void = { x, y in // The type of x is Int, the type of y is Int. } // Future let fn1 : ((Int, Int)) -> Void = { x in // The type of x is the tuple (Int, Int). }
SE-0111 വᏐతჩᏐඪតෆ࠶ੋ ܕผతҰ෦㟨 func viewExistAt(x:Int, y:Int) -> Bool { return
false } func deleteViewAt(dangerX:Int, dangerY:Int) -> Bool { print("") return true } var f :(x: Int, y: Int) -> Bool = viewExistAt f(x: 1,y: 2) f = deleteViewAt f(x: 1,y: 2) //
SE-0111 വᏐతჩᏐඪតෆ࠶ੋ ܕผతҰ෦㟨 // ະိ let f : (x: Int,
y: Int) -> Bool //။㗞ੜࡨޡ // ೳ༻ let f : (Int, Int) -> Bool // ݺڣ࣌ෆೳትlabel f(1,2)
SE-0113 ුᴍᏐ৽⃧ਐҐ/ࣺڈവ Ꮠ • FloatingPoint ৽⃧ round , rounded വᏐ
• แؚ֤छਐҐ/ࣺڈํ๏ɼ toNearestOrAwayFromZero(࢛ࣺޒೖɼ༬ઃᆴ),up(ແ ᑍ݅ਐҐ),down(ແᑍࣺ݅ڈ), towardZero, awayFromZero, toNearestOrEven(IEEE 754 default) • (4.5).rounded() == 5.0 • (4.1).rounded(.up) == 5.0
Evolution • SE-0086 ҠআFoundation త NS લஔࢺ • SE-0091 վਐ
Protocol தత operator એࠂํࣜ • SE-0107 UnsafeRawPointer API • SE-0109 Ҡআ Boolean protocol
SE-0086 ҠআFoundation త NS લஔࢺ
SE-0086 ҠআFoundation త NS લஔࢺ • جຊ্શ။ҠআNS ։಄ɼআྃҎԼزݸྫ֎ • Obj-c
ಛ༗త: NSObject, NSAutoreleasePool … • ฏ༗᮫త: NSUserNotification, NSBackgroundActivity … • ༗value ൛త: NSArray, NSString…
SE-0086 ҠআFoundation త NS લஔࢺ • ᄸ७ҠআNS ։಄త༗ 86 ݸ
Classɻ แؚ: NSBundle, NSTimeInterval, NSURLRequest… • ။վ໊త༗ 100 ݸ Classɻ แؚ: NSStringEncoding, NSNumberFormatterStyle… • ྻද SE-0086 • ᔒྻग़ိత။อཹ NS ։಄ • ။༗ migrator
SE-0091 վਐ Protocol தత operator એࠂํࣜ //ݱࡏ struct Foo {}
protocol Equatable { func ==(lhs: Self, rhs: Self) -> Bool } extension Foo: Equatable {} func ==(lhs: Foo, rhs: Foo) -> Bool { return lhs.value == rhs.value }
SE-0091 վਐ Protocol தత operator એࠂํࣜ //ະိ protocol Equatable {
func ==(lhs: Self, rhs: Self) -> Bool } struct Foo: Equatable { let value: Int static func ==(lhs: Foo, rhs: Foo) -> Bool { return lhs.value == rhs.value } }
SE-0107 UnsafeRawPointer API • ৽⃧શᔒ༗Type త Unsafe[Mutable]RawPointerɼሢ༻ိදࣔهԱᱪ • ݱ༗తUnsafe[Mutable]Pointer<Void> ။ඃ
Unsafe[Mutable]RawPointer
SE-0109 Ҡআ Boolean protocol • Ҡআ Boolean protocol • جຊ্ෆ။Өڹݱ༗ఔࣜ
Evolution • SE-0112 վਐ NSError bridging • SE-0114 ሡ Buffer
త Value վҝ Header • SE-0115 Literal protocol վ໊ • SE-0118 Closure ჩᏐվ໊
SE-0112 վਐ NSError bridging • ݱ༗త NSError bridging ༗ࡾݸ •
ErrorProtocol ᔒ㭎๏ఏڙ userInfo • Obj-C ိత API ᔒ㭎๏፤౸ userInfo • ༗Ұࠣ NSError * ჩᏐᔒ༗౸
SE-0112 վਐ NSError bridging • ৽⃧ࡾݸErrorProtocol LocalizedError, RecoverableError, CustomNSError •
Obj-c աိత Error ။༗ userInfo property • Ⴋᰨత NSError ҝ ErrorProtocol
SE-0114 ሡ Buffer త Value վҝ Header • ManagedBuffer<Value, Element>
ሡ။Ꮣ ManagedBuffer<Header, Element>
SE-0115 Literal protocol վ໊ • *LiteralConvertible ሡ။Ꮣ ExpressibleBy*Literal struct Age
: IntegerLiteralConvertible{ var value:Int init(integerLiteral val:IntegerLiteralType){ value = val } } let turtle:Age = 100 turtle.value
SE-0118 Closure ჩᏐվ໊ • ෦വᏐత closure label վ໊ • words.sort(isOrderedBefore:
>) -> words.sort(by: >)
Evolution • SE-0101 Ҡআ sizeofɼ৽⃧ MemoryLayout • SE-0116 Obj-C API
త id ။Import Any • SE-0120 मվ partition വᏐ • SE-0121 Ҡআ Optional తൺֱӡࢉ • SE-0124 Int.init(ObjectIdentifier) ৽⃧ bitPattern ඪត
SE-0101 Ҡআ sizeofɼ৽⃧ MemoryLayout • Ҡআ sizeof, sizeofValue, alignof, alignofValue,
strideof, strideofValue • ৽⃧ MemoryLayout • MemoryLayout.of(1).size //8
SE-0116 Obj-C API త id ။Import Any • ݱࡏObj-C
API త id ྨผੋImport AnyObjectɼ ॴҎValue త݅बෆೳ༻ • ະိ။ Import Anyɼൺֱํศ༻
SE-0120 मվ partition വᏐ • ݱ༗తpartition ੋڅ partition sort ༻త
var n = [5, 1, 2, 3, 6, 7, 8] let p = n.partition() //3 n // [3, 1, 2, 5, 6, 7, 8] • Ҡআݱ༗తɼ৽⃧partition(by:)ɼճၚᆴతࠨᬑੋ false తݩૉɼӈᬑੋ true తݩૉ var n = [5, 1, 2, 3, 6, 7, 8] let p = n.partition(by: { $0 > 2 }) // 2 n // [2, 1, 5, 3, 6, 7, 8]
SE-0121 Ҡআ Optional తൺֱӡ ࢉ • Optional ݱࡏՄҎී௨ᆴ၏ൺֱେখɼOptional Ӭԕ။খԙී௨ᆴɻ༗త࣌ީ။༗ҙ֎త݁Ռ struct
Person{ var name:String var age:Int? } let people=[ Person(name:"John", age:29), Person(name:"Ive", age: .none) ] let kids = people.filter{$0.age<20} kids // [{name "Ive", nil}]
SE-0121 Ҡআ Optional తൺֱӡ ࢉ • ະိ Optional ሡᔒ༗㭎๏ී௨ᆴൺେখɻ •
ୠੋ == != ґવ။อཹ
SE-0124 Int.init(ObjectIdentifier) ৽⃧ bitPattern ඪត • ObjectIdentifier ՄҎ༻ိද݅తهԱᱪҐஔɻ • ՄҎUInt
, Int. • ݱࡏతํ๏ᔒ༗labelɼະိ။Ꮣ Int(bitPattern: identifier)
Community • ༗ਓ༻ Swift ሜྃ Android Appɼ্ؐՍྃ https://medium.com/@ephemer/why-we-put-an- app-in-the-android-play-store-using- swift-96ac87c88dfc#.dwf14ykx8