EZ-NET 熊⾕友宏
http://ez-net.jp/
2015.12.20
@ 集まれ Swift 好き!Swift 愛好会
リテラルと型の話
Swift カジュアルプログラミング
Swift 2.1.1
熊谷友宏
EZ-NET http://ez-net.jp/
@es_kumagai
CodePiece
iOS, OS X, Apple Watch アプリ
ソースコードを Twitter と
Gist に同時投稿できる。
いつもの電卓
計算式も見える電卓アプリ。
watchOS 1 対応
音で再配達ゴッド
簡単操作で
再配達の申し込み。
EZ-NET IP Phone
iPhone でひかり電話を使う。
自宅 LAN からの利用専用
CodePiece for OS X
勉強会を楽しむアプリ
ソースコードを Twitter と Gist に同時投稿できる

勉強会で知見をみんなと共有したい時とかに便利!
できること
#__swift__
熊谷友宏
EZ-NET http://ez-net.jp/
@es_kumagai
横浜 iPhone 開発者勉強会
#yidev
勉強会
わいわい・ゆるく、iPhone 開発者の

みんなで楽しく過ごすのが目的の会
【 横浜・馬車道 】
カジュアル Swift 勉強会
#cswift
ゆるくみんなで Swift を語らえる場を

作りたくて始めた会
【 横浜・青葉台 】
第22回を 2016-03-05 に開催予定 第4回を 2015-12-26 に開催
熊谷友宏
EZ-NET http://ez-net.jp/
@es_kumagai
Xcode 5 徹底解説 MOSA
書籍 / 登壇
Xcode 5 の全機能を

徹底的に解説した本
OSX/iOS 系の歴史深い

有料会員制の勉強会
紙版は絶版、電子書籍は販売中
秀和システム 10x-Eng.com で取扱予定
Xcode 7 でも役立つはず 法人会員も多数
混乱しがちな?
リテラルの話
リテラルの話
1. リテラルの基礎を知り
2. リテラルの仕組みを把握して
3. リテラルの実際の動きを掌握する
構成
リテラル
概要
リテラル
▶ コードで値を書くのに使う
▶ 具体的な内容を記述する
概要
"Swift"
2.1
リテラル
▶ 整数リテラル
▶ 小数点数リテラル
▶ 真偽値リテラル
▶ 文字列リテラル
▶ nil リテラル
▶ 配列リテラル
▶ 辞書リテラル
種類
… 3
… 3.1
… true, false
… "STRING"
… nil
… [ value, ... ]
… [ key : value, ... ]
リテラル【 Literal 】
▶ 書いたまんま、というのを表す言葉
▶ 高級言語の用語で、コードに直接記載された値
即値【 Immediate 】
▶ 直接的なものを表す言葉
▶ アセンブラ用語で、コードに直接埋め込んだデータ
言葉が違うからリテラルを即値と訳すのは誤りとする説も
ありますが、訳として間違いとも言えない気もします。
【補足】リテラルと即値
リテラルを書く
リテラルの書式 (1/7)
▶ 2進数、8進数、10進数、16進数で表記可能
▶ 各数字の後ろに自由に _ を挿入できる
整数リテラル
200 // 10 進数
0xc8 // 16 進数
0o310 // 8 進数
0b11001000 // 2 進数
20_000_000 // _ は無視される
リテラルの書式 (2/7)
▶ 10進数、16進数で表記可能
▶ 各数字の後ろに自由に _ を挿入できる
小数点数リテラル
2.10 // 10進数
1.25e-4 // 10進数 … 1.25 × 10-4
0x15.8p3 // 16進数 … 0x15.8 × 23
1.001_001_e-8 // _ は無視される
リテラルの書式 (3/7)
▶ 真か偽かの2種類だけ
真偽値リテラル
true // 真を表現
false // 偽を表現
リテラルの書式 (4/7)
▶ 引用符で括って文字列を表現
▶ 特別な文字も挿入可能
文字列リテラル
"Swift" // Swift
""Swift"" // "Swift"
"Header:tText" // Header: Text
"!u{20DD}" // ! ⃝
リテラルの書式 (5/7)
▶ 無 を表現
nil リテラル
nil // 無
リテラルの書式 (6/7)
▶ 複数の要素を持つことを表現
▶ 各要素は自由に指定
配列リテラル
[ 1.5, val, "STR" ] // 3つの要素を持つ配列
[] // 何も要素を持たない配列
リテラルの書式 (7/7)
▶ 複数の要素を持つことを表現
▶ 各要素は キー と 値 の対で自由に指定
辞書リテラル
[ "A": 10, "B": 20 ] // 2つの要素を持つ辞書
[ : ] // 何も要素を持たない辞書
リテラルを使う
リテラルの使い方
▶ 変数に入れて使う
コード内にリテラルを書く
let name = "Swift"
let version = 2.1
リテラルの大事なところ
基礎
リテラルに型はない
リテラルの大事なところ
▶ リテラルだけでは値はできない
リテラル自体に型はない
let value = nil
Type of expression is ambiguous with more context
リテラルを型に嵌める必要がある
リテラルの大事なところ
▶ リテラルが型の値に変換される
▶ 前後関係から適切な型が決定される
型を明記して値にする
let value = nil as Int?
let value: Int? = nil
でも、型を明記しないで
リテラルを使えていたような?
let name = "Swift"
let version = 2.1
リテラルの既定の型
リテラルの大事なところ
▶ リテラルは型を明示して値にする
▶ 明示されないときは 既定の型 とみなす
リテラルを型に嵌める
// 整数リテラルが Double 型に決まる
let value = 10 as Double
// 整数リテラルが Int 型とみなされる
let value = 10
Double 型
Int 型
型が明示されないときの既定の型
リテラルの大事なところ
▶ 整数リテラル
▶ 小数点数リテラル
▶ 真偽値リテラル
▶ 文字列リテラル
▶ nil リテラル
▶ 配列リテラル
▶ 辞書リテラル
… Int 型
… Double 型
… Bool 型
… String 型
… なし
… Array 型
… Dictionary 型
リテラルの大事なところ
▶ 前後関係からも型が推論される
▶ たとえば、代入や計算
前後関係からも型が決まる
// Double 型の変数があるとき
let value:Double = 10
// 整数リテラルが Double 型とみなされる
let answer = value * 10
Double 型
リテラルの大事なところ
▶ 前後関係からも型が推論される
▶ たとえば、関数の引数
前後関係からも型が決まる
// Double 型を受け取る関数があるとき
func doSomething(value:Double) {
}
// 渡したリテラルが Double 型とみなされる
doSomething(10)
Double 型
型が既に決められている場合はそれに従う
let array: [Int] = [10, 20, 30]
内容から [Double] 型と推論
let array = [3.01, 3.12, 3.23, 3.34]
オブジェクト型は継承関係も考慮して推論
let array = [りんご(), みかん(), ぶどう()]
プロトコルの準拠性や継承関係では推論されない
【余談】配列リテラルからの型推論
[Int] 型
[Double] 型
[くだもの] 型
リテラルを型に嵌める仕組み
実践
型がリテラルを引き受ける仕組み
▶ 型がリテラルの受け入れを表明する
▶ 対応リテラルは LiteralConvertibleで決定
// IntegerLiteralConvertible を表明していれば
enum MyVariant : IntegerLiteralConvertible {
}
// 整数リテラルを受け入れられる
let value: MyVariant = 10
リテラルを受け入れられる型
型がリテラルを引き受ける
▶ イニシャライザーでリテラルを受け取る
▶ 受け取った値を適切なデータに変換する
enum MyVariant : IntegerLiteralConvertible {
case IntegerValue(Int)
case FloatingPointValue(Double)
init(integerLiteral value: Int) {
self = .IntegerValue(value)
}
}
型が責任を持って値を作る
型がリテラルを引き受ける
受け入れ表明で使うプロトコル
型がリテラルを引き受ける
▶ 整数リテラル
▶ 小数点数リテラル
▶ 真偽値リテラル
▶ 文字列リテラル
▶ nil リテラル
▶ 配列リテラル
▶ 辞書リテラル
… IntegerLiteralConvertible
… FloatLiteralConvertible
… BooleanLiteralConvertible
… StringLiteralConvertible
… NilLiteralConvertible
… ArrayLiteralConvertible
… DictionaryLiteralConvertible
定義
protocol IntegerLiteralConvertible {
typealias IntegerLiteralType
init(integerLiteral value: IntegerLiteralType)
}
整数リテラルを受け取るときに使うイニシャライザーが
規定されています。これに準拠した型は整数リテラルを
受け入れられる型になります。
【補足】IntegerLiteralConvertible
定義
protocol StringLiteralConvertible : ExtendedGraphemeClusterLiteralConvertible {
typealias StringLiteralType
init(stringLiteral value: StringLiteralType)
}
protocol ExtendedGraphemeClusterLiteralConvertible : UnicodeScalarLiteralConvertible {
typealias ExtendedGraphemeClusterLiteralType
init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType)
}
protocol UnicodeScalarLiteralConvertible {
typealias UnicodeScalarLiteralType
init(unicodeScalarLiteral value: UnicodeScalarLiteralType)
}
文字列リテラルを受け取るときに使うイニシャライザーが
規定されています。複数のプロトコルを継承しています。
init(stringLiteral:) 以外の使われ方を教えてください !
【補足】StringLiteralConvertible
リテラルと型の関係
▶ 型がリテラルを引き受ける
▶ リテラル自体に型はない
おさらい
リテラルと型の関係
// リテラルは、いろんな型に染まる
let value: Int = 10
let value: UInt64 = 10
let value: Double = 10
let value: NSNumber = 10
関係性から見えてくること
リテラルと型の関係
nil は Optional 型?Q.
Optional 型が nil を空として扱うA.
関係性から読めてくること
リテラルと型の関係
true は Bool型?Q.
Bool型が true を真として扱うA.
NSNumber型が真と扱っても良いA.
▶ リテラルをどう扱うかは型の責任
▶ リテラルの意味を尊重することは重要
// 整数リテラルを 32 bit 整数 として扱う
let number: Int32 = 100
// nil リテラルを 何もない として扱う
let value: String? = nil
// 配列リテラルを オプションセット として扱う
let options: UIViewAutoresizing
= [.FlexibleWidth, .FlexibleHeight]
リテラルの扱いは型の裁量で決まる
リテラルと型の関係
整数リテラルは Int 型?Q.
たとえば …
リテラルから受け取る値
型の内容がUInt64で表現されるとき
リテラルがInt型だと表現しきれない
▶ 型の内容が UInt64 で表現されるとき
▶ リテラルが Int 型では表現しきれない
struct UserID : IntegerLiteralConvertible {
var value: UInt64
init(integerLiteral value: Int) {
self.value = UInt64(value)
}
}
リテラルを 64 bit 符号なし整数で扱いたい
リテラルから受け取る値
リテラルには型がない💡
▶ リテラルは任意の型で受け取れる
▶ ただし、互換性のあるものに限る
struct UserID : IntegerLiteralConvertible {
var value: UInt64
init(integerLiteral value: UInt64) {
self.value = value
}
}
リテラルを 64 bit 符号なし整数で受け取る
リテラルから受け取る値
▶ 小さい型でも受け取れる
▶ 範囲を超えると ビルドタイム でエラー
struct Word : IntegerLiteralConvertible {
init(integerLiteral value: UInt8) { … }
}
let word1: Word = 255
let word2: Word = 300
リテラルの値の範囲を絞れる
リテラル変換で受け取る値
Integer literal '300' overflows when stored into 'UInt8'
定義
struct MyIntegerLiteral : _BuiltinIntegerLiteralConvertible {
var value: Int8
init(_builtinIntegerLiteral value: _MaxBuiltinIntegerType) {
self.value = Int8(_builtinIntegerLiteral: value)
}
}
使用
struct MyStruct : IntegerLiteralConvertible {
init(integerLiteral value: MyIntegerLiteral) {
}
}
このようにするとリテラルの値を自作の型で受け取れます。
ただし、ビルド時のオーバーフロー検出は行われません。
【余談】IntegerLiteralType の互換性
リテラルの動きを捉える
演習
リテラルから値を生成する
1/5
▶ リテラルに型を指定して値を作る
▶ 変換イニシャライザーが呼び出される
enum MyVariant : IntegerLiteralConvertible {
}
// A. 型を明記した変数にリテラルを入れる方法
let value: MyVariant = 200
// B. リテラルに型を明記する方法
let value = 200 as MyVariant
リテラルから値を生成する
リテラルの動きを捉える
型
リテラルから値を生成する
リテラル
型を明示
変換イニシャライザー
値
リテラルの動きを捉える
型を複数のリテラルに対応する
2/5
▶ 複数のリテラルコンバーティブルに準拠
▶ それぞれのリテラルを受容可能になる
// 型が複数のリテラルを受け入れるときに
enum MyVariant : IntegerLiteralConvertible,
FloatLiteralConvertible {
}
// 対応するどのリテラルからも生成可能
let value1: MyVariant = 200
let value2: MyVariant = 150.8
型を複数のリテラルに対応する
リテラルの動きを捉える
型
型を複数のリテラルに対応する
リテラルの動きを捉える
整数
リテラル
型を明示
整数用の変換イニシャライザー
値
小数点数用の変換イニシャライザー
値をリテラルと比較する
3/5
▶ リテラルと直接的に比較できる
▶ 型が比較可能なことが条件
enum MyVariant
: IntegerLiteralConvertible, Equatable {
}
let value: MyVariant = 200
// リテラルと直接的に比較可能
if value == 300 {
}
値をリテラルと比較する
リテラルの動きを捉える
値をリテラルと比較する
リテラルの動きを捉える
リテラル==値
同じ型での比較原則
値
型
変換イニシャライザー
型を推論
関数の引数にリテラルで渡す
4/5
▶ リテラルを直接引数に渡せる
▶ 目的の型の値へ暗黙的に変換される
// 型を引数で受け取る関数に
func calculate(value: MyVariant) {
}
// 対応するリテラルを直接的に渡せる
calculate(120)
関数の引数にリテラルで渡す
リテラルの動きを捉える
関数の引数にリテラルで渡す
リテラルの動きを捉える
リテラル
値
関数(value:型)
型
変換イニシャライザー
型を推論
列挙型のRaw値で自作の型を使う
5/5
▶ リテラル対応の型を Raw 値に使える
▶ 使えるリテラルは整数、小数、文字列のみ
// 列挙子の値はリテラルで指定する
enum Coefficient : MyVariant {
case Treble = 3
case Halve = 0.5
}
// Raw 値を MyVariant 型で取得できる
Coefficient.Treble.rawValue
列挙型のRaw値で自作の型を使う
リテラルの動きを捉える
列挙型のRaw値で自作の型を使う
リテラルの動きを捉える
Raw 値
列挙型
Raw 型
変換イニシャライザー
列挙子A
Raw 型
リテラル
列挙子B リテラル
rawValue
【補足】列挙型の Raw値で使えるリテラル
▶ 整数リテラル
▶ 小数点数リテラル
▶ 文字列リテラル
複数種類のリテラルを受け入れられる型を Raw 型に指定すると
Raw 値に複数のリテラルを混ぜて指定できるようになります。
隠しリテラル ?
おまけ
カラーリテラル
Color Literal
import UIKit
let color: UIColor
= [#Color(colorLiteralRed: 0.6587,
green: 1.0000,
blue: 0.6987,
alpha: 1.0000)#]
概要
カラーリテラル
[#Color(colorLiteralRed: R, green: G,
blue: B, alpha: A)#]
protocol _ColorLiteralConvertible {
init(colorLiteralRed: Float,
green: Float,
blue: Float,
alpha: Float)
}
Literal Convertible
カラーリテラル
extension NSColor : _ColorLiteralConvertible {
}
extension UIColor : _ColorLiteralConvertible {
}
Playground で使う
カラーリテラル
1. コード行に [#Color#] と書く
2. インラインに 箱  が描かれる
3. 箱をダブルクリックして
カラーピッカー で選べる
Playground
Playground での使用例
カラーリテラル
Playground
カラーパレットからの入力も可能
カラーリテラル
Playground
カーソル行へのドロップで入力
カラーパレットは Edit メニューから表示
カラーリテラル
Playground
画像リテラル
Image Literal
import UIKit
let image: UIImage
= [#Image(imageLiteral: "Swift.png")#]
概要
画像リテラル
[#Image(imageLiteral: PATH)#]
protocol _ImageLiteralConvertible {
init(imageLiteral: String)
}
Literal Convertible
画像リテラル
extension NSImage : _ImageLiteralConvertible {
}
extension UIImage : _ImageLiteralConvertible {
}
Playground で使う
画像リテラル
A. コード行に直接書く
[#Image(imageLiteral: "Swift.png")#]
Playground
OR
B. コードに画像を直接ドロップする
Playground での使用例
画像リテラル
Playground
ファイルリテラル
File Reference Literal
import Foundation
let path: NSURL = [#FileReference(
fileReferenceLiteral: "main.mm")#]
概要
ファイルリテラル
[#FileReference(fileReferenceLiteral:
PATH)#]
protocol _FileReferenceLiteralConvertible {
init(fileReferenceLiteral: String)
}
Literal Convertible
ファイルリテラル
extension NSURL
: _FileReferenceLiteralConvertible {
}
Playground で使う
ファイルリテラル
A. コード行に直接書く
[#FileReference(fileReferenceLiteral: "main.mm")#]
Playground
OR
B. コードにファイルを直接ドロップする
Playground での使用例
ファイルリテラル
Playground
型とリテラルの話
以上
まとめ
リテラルと型の話
1. リテラルを書く・リテラルを使う
2. リテラルの大事なところ
リテラルに型はない
リテラルを型に嵌める
リテラルの既定の型
3. リテラルを型に嵌める仕組み
型がリテラルを受け入れる
リテラルと型の関係
4. リテラルの動きを捉える
5. 隠しリテラル?

More Related Content

PDF
CSPO、CSM研修に参加して
PDF
戦う情シス!全社 API で社内アプリ開発を加速させよう
PDF
Design by contractとホーア論理
PDF
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
PPTX
iOSDC 2018 動画をなめらかに動かす技術
PPTX
世界一わかりやすいClean Architecture
PDF
市場価値で給料が決まるサイボウズの社員だけど、転職ドラフトに参加して給与交渉に挑戦してみました —結果編—
PDF
グラフデータベースは如何に自然言語を理解するか?
CSPO、CSM研修に参加して
戦う情シス!全社 API で社内アプリ開発を加速させよう
Design by contractとホーア論理
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
iOSDC 2018 動画をなめらかに動かす技術
世界一わかりやすいClean Architecture
市場価値で給料が決まるサイボウズの社員だけど、転職ドラフトに参加して給与交渉に挑戦してみました —結果編—
グラフデータベースは如何に自然言語を理解するか?

What's hot (20)

PDF
統計的係り受け解析入門
PDF
Junitを使ったjavaのテスト入門
PDF
勉強か?趣味か?人生か?―プログラミングコンテストとは
KEY
ラムダ計算入門
PDF
社内ドキュメント検索システム構築のノウハウ
PDF
機械学習で嘘をつく話
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PDF
Word2vecの並列実行時の学習速度の改善
PDF
Parser combinatorってなんなのさ
PDF
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
PDF
IT系エンジニアのためのプレゼンテーション入門
PDF
はじめての「R」
ODP
Attention-Guided GANについて
PDF
なぜデータモデリングが重要なのか?
PPTX
イベント・ソーシングを知る
PDF
Ruby で高速なプログラムを書く
PDF
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PDF
Redmineプラグイン導入・開発入門
PDF
絶対に描いてはいけないグラフ入りスライド24枚
PDF
うちのRedmineの使い方(2)
統計的係り受け解析入門
Junitを使ったjavaのテスト入門
勉強か?趣味か?人生か?―プログラミングコンテストとは
ラムダ計算入門
社内ドキュメント検索システム構築のノウハウ
機械学習で嘘をつく話
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Word2vecの並列実行時の学習速度の改善
Parser combinatorってなんなのさ
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
IT系エンジニアのためのプレゼンテーション入門
はじめての「R」
Attention-Guided GANについて
なぜデータモデリングが重要なのか?
イベント・ソーシングを知る
Ruby で高速なプログラムを書く
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
Redmineプラグイン導入・開発入門
絶対に描いてはいけないグラフ入りスライド24枚
うちのRedmineの使い方(2)
Ad

Viewers also liked (20)

PDF
リテラルと型の続きの話 #__swift__
PDF
Swift の3大プロトコルを眺めてみる #love_swift
PDF
Swift チャチャチャ #love_swift
PDF
Swift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswift
PDF
favyのiOSアプリ開発
PDF
lazy var の特徴を知る #cocoa_kansai #cswift
PDF
ネイルブック開発チームの新たなる挑戦〜新アプリ開発秘話〜
PDF
プロトコル指向に想う世界観 #__swift__
PDF
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
PDF
Container View Controllerを正しく使おう
PDF
みんなで Swift 復習会での談笑用スライド – 5th #minna_de_swift
PPTX
Guiding principles for
DOCX
Trabajo colaborativo list
PPTX
SharePoint Fest Denver - Is Your SharePoint Really Healthy?
PDF
Valsts pārvaldes institūciju pasūtīto pētījumu koordinācijas sistēma
PPT
Open Educational Resources: Policy Implications
PPT
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
PDF
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
PDF
Retallos 2008
PDF
Nebosh Oil and Gas opearational safety certificate (2)
リテラルと型の続きの話 #__swift__
Swift の3大プロトコルを眺めてみる #love_swift
Swift チャチャチャ #love_swift
Swift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswift
favyのiOSアプリ開発
lazy var の特徴を知る #cocoa_kansai #cswift
ネイルブック開発チームの新たなる挑戦〜新アプリ開発秘話〜
プロトコル指向に想う世界観 #__swift__
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
Container View Controllerを正しく使おう
みんなで Swift 復習会での談笑用スライド – 5th #minna_de_swift
Guiding principles for
Trabajo colaborativo list
SharePoint Fest Denver - Is Your SharePoint Really Healthy?
Valsts pārvaldes institūciju pasūtīto pētījumu koordinācijas sistēma
Open Educational Resources: Policy Implications
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
Retallos 2008
Nebosh Oil and Gas opearational safety certificate (2)
Ad

Similar to リテラルと型の話 #__swift__ (20)

PPTX
Deep dive into oss written in swift
PPTX
Deep dive into oss written in swift
PDF
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
PDF
F#によるFunctional Programming入門
PDF
Effective Modern C++ Item 7&8
PDF
C++ ポインタ ブートキャンプ
PDF
可変値変数 var を極力避けることを模索するための事前知識 #cswift
PDF
Python と型ヒント (Type Hints)
PDF
Hello Dark-Side C# (Part. 1)
PDF
Swift を振り返ってみよう #cswift
PDF
iOS 8/Swift 概要 #ios8yahoo
PDF
Swift 2.0 で変わったところ「後編」 #cswift
PDF
Refactoring point of Kotlin application
PPTX
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
PDF
Swift 構造体の時代 #yidev
PDF
Javaセキュアコーディングセミナー東京第2回講義
PDF
Effective Modern C++ 勉強会#1 Item3,4
PPTX
Roslyn による Visual Studio のアドイン
PDF
PDF
asm.js x emscripten: The foundation of the next level Web games
Deep dive into oss written in swift
Deep dive into oss written in swift
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
F#によるFunctional Programming入門
Effective Modern C++ Item 7&8
C++ ポインタ ブートキャンプ
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Python と型ヒント (Type Hints)
Hello Dark-Side C# (Part. 1)
Swift を振り返ってみよう #cswift
iOS 8/Swift 概要 #ios8yahoo
Swift 2.0 で変わったところ「後編」 #cswift
Refactoring point of Kotlin application
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
Swift 構造体の時代 #yidev
Javaセキュアコーディングセミナー東京第2回講義
Effective Modern C++ 勉強会#1 Item3,4
Roslyn による Visual Studio のアドイン
asm.js x emscripten: The foundation of the next level Web games

More from Tomohiro Kumagai (20)

PDF
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
PDF
Swift 所有権 要諦 #ゆるちとせ
PDF
_Function Builders in Swift #love_swift
PDF
Property Wrappers の特徴を眺める #swiftzoomin
PDF
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
PDF
みんなで Swift 復習会
GO! in 札幌 – 10th′′
PDF
イニシャライザー Part 2.5 #hakataswift
PDF
ニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
PDF
Swift クラスのイニシャライザー #devsap
PDF
iOSCon 2019 in London #ioscon #love_swift
PDF
Around the 変数 let #love_swift
PDF
もくもく執筆会 #技術同人誌再販Night
PDF
みんなで Swift 復習会 GO! in 岩手 – 9th′
PDF
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
PDF
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
PDF
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
PDF
みんなで Swift 復習会
GO! in 京都 – 6th′
PDF
みんなで Swift 復習会 GO! in 福岡 – 5th′
PDF
勉強会の東京外開催の気持ち #yuru_bounen2017
PDF
みんなで Swift 復習会 GO! in 福岡・発表資料
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
Swift 所有権 要諦 #ゆるちとせ
_Function Builders in Swift #love_swift
Property Wrappers の特徴を眺める #swiftzoomin
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会
GO! in 札幌 – 10th′′
イニシャライザー Part 2.5 #hakataswift
ニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
Swift クラスのイニシャライザー #devsap
iOSCon 2019 in London #ioscon #love_swift
Around the 変数 let #love_swift
もくもく執筆会 #技術同人誌再販Night
みんなで Swift 復習会 GO! in 岩手 – 9th′
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会 GO! in 福岡 – 5th′
勉強会の東京外開催の気持ち #yuru_bounen2017
みんなで Swift 復習会 GO! in 福岡・発表資料

リテラルと型の話 #__swift__