勉強会の中で StringProtocol
に対して count(of:)
メソッドを実装する例を紹介しましたが、次のように間違えたコードを書いていました。
extension StringProtocol {
func count(of: letter: Character) -> Int {
string.filter { $0 == letter }.count
}
}
この中の string
は、外のスコープで宣言してあったため、エラーなく使うことができてしまいましたが、実際には「自身の文字列の中から、指定した文字をカウントする」実装にしたかったため、間違いです。
正しくは、次のコードになります。
extension StringProtocol {
func count(of: letter: Character) -> Int {
filter { $0 == letter }.count
}
}