Swift 3.0でStringはどうなったか
前回Swift2.0のStringの仕様を調べたが、編集系(append, insert, remove, replace)のメソッドの仕様は整理しきれていない、というくやしい終わり方をした。 Swift 2.0でStringはどうなったか - 特殊文字などの扱い 今回はまず、この編集系メソッドから見ていく。 編集系メソッドの引数に与えるものは主にCharacterとStringであるが 、そのほかにCharacterを要素にもつシーケンスというものがある。これは、名前がSとして <S : Sequence where S.Iterator.Element == Character> という性質を持つ。ここではこれを「Characterシーケンス」ということにする。 append(連結)系 Swift2.0ではメソッド名がバラバラだったものが、めでたくappendに統一された。 CharacterやStringの場合は引数ラベルなしで与える。 Characterシーケンスの場合はラベルにcontentOfが付けられる。 mutating func append(_ c: Character) mutating func append(_ other: String) mutating func append<S : Sequence where S.Iterator.Element == Character>(contentsOf newElements: S) このほかに土台のStringに変更を加えないで、与えられたものを追加したStringを返すメソッドがある。 func appending(_ aString: String) -> String これは土台のStringが変更されないので、mutatingが付けられていない。他の編集系メソッドにも語尾がingでこの性質のメソッドがある。 insert(挿入)系 これも名前がinsertに統一された。 appendと同じようにCharacterシーケンスの場合はラベルにcontentOfが付けられる。 Stringを受けるものはない? mutating func insert(_ newElement: Character, at i: Stri...