Avatar
omochimetaru 6/19/2020 4:04 AM
それはString型じゃなくてそういうデータ構造の二次的な型を作るのが良いと思います
4:05 AM
そうすればString直接使う場合と、そのテーブル付きStringを使う場合の両方選択できて、トレードオフをユーザが決定できる。
4:05 AM
そもそも、ランダムアクセスが必要なシチュエーションがどういうものかも、気になりますけど。
4:07 AM
例えばパーサーのバックトラックだったら、戻りたいところだけindexを事前に保存しておけるし、行頭の逆方向への検索も逐次的な移動でできるし、一定文字数で丸めるとかもできるし・・・
4:08 AM
クロスワードパズルゲームを実装するみたいなちょっと変わったシナリオでしかインデックスランダムアクセスは必要ない気がします。
4:08 AM
(ただクロスワードの例だったら文字列長が短いので毎回頭から数え上げても大丈夫そうだ)
4:13 AM
どちらかというと、みんなが気に食わないのって、
4:13 AM
stringとindexのデータ構造のほうじゃなくって
4:14 AM
str[str.index(str.startIndex, offsetBy: 2)] って、 str を3回書かないといけないところじゃないかと思います。
4:16 AM
これについては https://forums.swift.org/t/offset-indexing-and-slicing/28333 これが進んだら解決すると思ってて
v2 changes Removed .start and .end, now all OffsetBounds are built from .first and .last. Simplifies usage and learnability. Delineates OffsetBound abstraction and terminology from indices. Added RangeReplaceableCollection convenience overloads, subscript setters. .inser...
4:17 AM
str[.first + 2] って書けるようになります。