関西モバイルアプリ研究会 #11でSwiftのLensについて発表しました。
今回は大阪イノベーションハブで行われ、関モバでは始めての大阪開催となりました。
Lens自体については次のQiita記事が参考になります。
Lensy & Swift-IDL
Optional
とArray
に対応して、Resultを返すLensをつくりました。
Optional
とArray
にはそれぞれ、OptionalUnwrapLens
とArrayIndexLens
を使います。
editor.compose(OptionalUnwrapLens<Person>()).compose(name).get(book) // OK("Sasaki")
authors.compose(ArrayIndexLens<Person>(at: 0)).compose(name).get(book) // OK("Yamada")
authors.compose(ArrayIndexLens<Person>(at: 1)).compose(composed).get(book) // OK("Yokohama")
authors.compose(ArrayIndexLens<Person>(at: 2)).compose(composed).get(book) // Error(ArrayIndexOutOfBounds)
また、Lensをフィールドの数だけ自分で用意するのはさすがにつらいので、自動生成するツールをつくりました。
swift-idlの自動生成にはHelperが含まれており、これは$
でアクセスできます。
Helperを使うと、.
記法での記述ができて補完も効くようになります
また、[]
記法での配列の要素アクセスができるようになります。
ただし、Optional
のアンラップにはunwrap
を利用します。これは、Swiftでは演算子!
のオーバライドが禁止されているからです。
その他の利用方法については、それぞれのREADMEを参照してください。
雑感
会場の利用時間の都合もあって、発表者の抽選がありました。発表側の抽選が意味をなしたのも、関モバでは始めてのはず。 発表者を含む参加者が50人を超えたのも始めてで、いろいろ始めてづくしの回でした。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。