今のところ、SwiftにはArray
の「Element
が常にString
です」という拡張子を書くことはできません。
しかし、ほとんど同じ機能を持つ拡張機能を書くことができます。
protocol MyStringType {
var characters: String.CharacterView { get }
//You may need some other properties or methods to write your extension...
}
// Make `String` the only type conforming to `MyStringType`.
extension String: MyStringType {}
そしてElement
は、プロトコルに準拠拡張子を書く:
はString
が準拠することができ、独自のプロトコルを、書きます。この例Element
で
extension Array where Element: MyStringType {
func spliteByPrefix() -> [Element]{ //You really want to return, `Array<Element>`?
for item in self {
for ch in item.characters {
//Do something with `ch`.
_ = ch
}
}
return []
}
}
注、参照http://nshipster.com/swift-literal-convertible/:私は、使用の配列
例の要素自体を使用します例。 –
あなたのコメントのために@MartinRに感謝しました。私はStringLiteralConvertibleが正しい選択ではないと思うコードを更新しました。 – David
コンパイルしているかどうかチェックしましたか? –