寄付窓口はこちら

変性のダイヤモンド | try! Swift Tokyo 2018 Day1-8

ジェネリクスはSwift言語における悩みの種となっている面白いトピックです。Generics Manifest では、Swift の型システムが定義よりも実践に重きを置いて作られたかについて素晴らしい説明がされています。ですが、「変性のダイヤモンド」という理論では、型システムの完全性とSwiftのジェネリクスがいかにこの理論にフィットしているかを別の視点で見ることができます。

このトークでは、Swiftにおける変性、共変性、反変性と、ダイヤモンドの上に輝く、Phantom Type について説明します。

変性のダイヤモンド

f:id:niwatako:20180301150316j:plain

f:id:niwatako:20180301150446j:plain

Mercari Souzoh で働いています

ターミナルツールを使って構築を楽しんでいました。

今日は変性というトピックです

f:id:niwatako:20180301150509j:plain

タイプコンストラクトの間のサブタイプの関係性になります

f:id:niwatako:20180301150537j:plain

AがBのサブタイプならF<A>F<B>のサブタイプになる共変性

f:id:niwatako:20180301150557j:plain

Arrayやオプショナルは共変性です。

f:id:niwatako:20180301150642j:plain

f:id:niwatako:20180301150723j:plain

反変性

ネストを増やして逆にしていける

f:id:niwatako:20180301150744j:plain

f:id:niwatako:20180301150801j:plain

Fが不変性であれば関係がない、Invarianceになる

f:id:niwatako:20180301150820j:plain

お互い全く関係ない場合に F<A>F<B> に代入できる サイヤ人とナメック人がZFighterに代入できる

f:id:niwatako:20180301150850j:plain

f:id:niwatako:20180301150929j:plain

[広告]面白かったら、ためになったら

  • はてなブックマークSwift タグをつけてブックマーク!
  • 「インターネットで生活を楽しく豊かにしたい」仲間を募集しています
  • Bitcoin: 3KGqXtR1ZaGVdkvcw8CCNrkDxDhdbZBYHL