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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Swift Weekly 7/26
Search
Johnlin
July 26, 2016
Programming
180
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Swift Weekly 7/26
Johnlin
July 26, 2016
More Decks by Johnlin
See All by Johnlin
用 MLIR 實作 一個 Ruby IR (intermediate representation)
johnlinvc
0
330
Unearth Ruby builtin Gems 發掘 Ruby 的內建 Gems
johnlinvc
0
420
Ruby 型別檢查工具簡介
johnlinvc
0
640
Swift Actor 實作探索
johnlinvc
0
210
用 mruby 來寫跨平台工具
johnlinvc
0
130
Actor model 簡介
johnlinvc
0
240
一起玩 Helm 3
johnlinvc
1
170
為什麼 App 卡卡的
johnlinvc
2
1.3k
如何使用 byebug 來除錯 Ruby 程式
johnlinvc
0
280
Other Decks in Programming
See All in Programming
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
980
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
140
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
690
新卒PdEのリアル
ryu1013
1
450
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
290
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
140
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
110
信頼性の目標を誰も求めてない
shubox
0
500
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
170
Deep dive into the select statement (GopherCon UK)
jespino
0
170
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
1
160
AIと壁打ちしながら進めるコスト管理
fufuhu
2
2k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Paper Plane
katiecoart
PRO
2
53k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How STYLIGHT went responsive
nonsquared
100
6.3k
How to Talk to Developers About Accessibility
jct
2
540
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
The browser strikes back
jonoalderson
0
1.6k
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