前回の勉強会中で話題に登った『アプリケーション規模で var を極力減らしてみよう』をみんなで試みる前の前提知識として用意した、変数を let で扱うことの意味やそれにまつわるお話を紹介するために作成したスライドです。
ややこしい部分はその場で説明したらいいかなと思って作ったので、スライド的に流れや説明が欠けているところもありますけど、幾らかの参考になるかもしれません。
前回の勉強会中で話題に登った『アプリケーション規模で var を極力減らしてみよう』をみんなで試みる前の前提知識として用意した、変数を let で扱うことの意味やそれにまつわるお話を紹介するために作成したスライドです。
ややこしい部分はその場で説明したらいいかなと思って作ったので、スライド的に流れや説明が欠けているところもありますけど、幾らかの参考になるかもしれません。
Windows asyncronous I/O discovering in .NET through kernel mode.
Unconference before Microsoft Japan "de:code" 2016 conference.
http://connpass.com/event/29637/
A Lisp-like lightweight functional language on .NET.
This slide contains how to generate expressions from Nesp parser.
ML勉強会 #2 https://ml-lang.connpass.com/event/58151/
https://github.com/kekyo/Nesp
Windows asyncronous I/O discovering in .NET through kernel mode.
Unconference before Microsoft Japan "de:code" 2016 conference.
http://connpass.com/event/29637/
A Lisp-like lightweight functional language on .NET.
This slide contains how to generate expressions from Nesp parser.
ML勉強会 #2 https://ml-lang.connpass.com/event/58151/
https://github.com/kekyo/Nesp
2019/12/25 に開催した「みんなで Swift 復習会 GO! in 札幌」で使用した資料です。主にオープニング用の資料で、本編で使ったスライドは僅かで現場にいないと役に立たないかもしれませんが、何かの参考用に公開します。
実際の現場で使った本編資料は2ページですけれど、話が脱線する中で詳細に触れた項目が記載されていたページも数ページですけれど公開しておきました。
2018/11/09 の Swift 愛好会の LT で『Swift の let した変数に値を再代入してみよう』という問題提起をするのに使ったオープニング的なスライドです。
このスライドに「解答」は含まれていないので、この話題をきっかけにあれこれ試行錯誤して、さらにはそこから『どうして2回、代入することができたのか』みたいな理由を考える糸口にしてもらえたら嬉しいです。
This code snippet shows two switch statements in Swift. The first switch statement matches on a variable v and prints different outputs depending on which pattern matches. The second switch statement matches on a device variable and can match multiple patterns on one case or use a where clause to check for a suffix, printing outputs accordingly.
The document discusses control flow statements in Swift including if/else statements to check conditions, switch statements to check multiple options, and looping statements like for-in, while and repeat-while. It also provides examples of if let to safely unwrap optionals and the nil coalescing operator ?? to handle nil values.
8. 互換性
1. Interoperability
Swift クラスを Objective-C から使用
Cocoa API を Swift コードから利用
2. Mix and Match
Objective-C ファイルと Swift ファイルを
ひとつのプロジェクトに混在して併用
3. Migration
既存の Objective-C コードを Swift から
Swift らしい構文で利用
18. C リテラルからの訣別
NSString *str = @"OBJC STRING";
NSNumber *num = @10;
char* str = "C STRING";
int num = 10;
Objective-C
let str:String = "SWIFT STRING"
let num:Int = 10
Swift
C リテラルの考慮が不要に
20. 変数の刷新
NSInteger i = 10;
const NSInteger i = 10;
NSString* s = @"TEXT";
NSMutableString* s = [@"TEXT" mutableCopy];
Objective-C
var i = 10
let i = 10
let s = "TEXT"
var s = "TEXT"
Swift
二種類の変数を利用可能に
21. 文字列リテラルの拡張(展開)
NSString *str = [NSString
stringWithFormat:@"Name=%@, Value=%d",
name, value];
Objective-C
let str:String
= "Name=(name), Value=(value)"
Swift
リテラル内で変数を展開可能に
22. 文字列リテラルの拡張(連結)
NSString *str = [@"MSM"
stringByAppendingString:@"2014"];
Objective-C
let str:String = "MSM" + "2014"
Swift
演算子で文字列を連結可能に
27. 数値リテラル
さりげなく嬉しい機能
let dec = 200 // 10進数
let hex = 0xc8 // 16進数
let oct = 0o310 // 8進数
let bin = 0b11001000 // 2進数
let d = 2.10
let d = 1.25e-4 // 1.25×10-4
let d = 0x15p3 // 0x15×23
32. Closure
// クロージャの定義
let isOK:(Int)->Bool = {(code:Int)->Bool in
return contains(200..<300, code)
}
// 関数のように実行
let result = isOK(200)
// 別の関数の引数に渡して実行
let result = contains(statuses, isOK)
Swift
即席関数をシンプルに作って使える
34. Multiple return types
func getStatus()->(code:Int, status:String) {
return (200, "OK")
}
Swift
戻り値で複数の値を返せる
enum Status {
case OK
case Failed(String)
}
func getStatus()->Status {
return Status.OK
}
Swift