iOSDCでSwiftのStringの文字の数え方について話します #iOSDC

f:id:taka1068:20190905101333p:plain

スケジュール

概要

SwiftのStringはUnicodeを正しく扱うことを非常に重視した設計になっています。そのおかげで、絵文字を含む文字列でも正しい文字数を計算してくれます。

一方で、Unicodeの複雑さに引きずられてしまい直感的な操作ができない時もあります。たとえば、 string[2] と書いても3番目の文字を取得することはできません。

さらに、Swift自体のProtocol Oriented Programming思想の影響からCollectionプロトコルによる型の制約も話をややこしくしています。

僕のトークではそんな複雑ところを解きほぐしていきます。

このトークで説明すること

  • StringとCharacterはUnicodeとどう関連しているのか
  • StringはなぜIntで添字アクセスできないのか
  • Stringはなぜ添字アクセスで要素を変更できないのか

stack overflowなんかを見てN番目の文字を取得する方法はわかったものの、なぜそんなAPIになっているかイマイチ納得できない方には是非来ていただきたいです。Unicodeの仕様や計算量まで掘り下げて解説します。

スライドからの抜粋です
f:id:taka1068:20190905102728j:plain
f:id:taka1068:20190905105017j:plain
f:id:taka1068:20190905103155j:plain
f:id:taka1068:20190905103302j:plain

関連リンク

僕の所属するフェンリルのブログでも僕の登壇を紹介してくれています。とくに弊社のボトルウォーターはおすすめですよ!

engineers.fenrir-inc.com