これは、以前に発表されたSwift 2.0ソリューションのSwift 3.0バージョンです。BNR本Swift Ch 22、Gold Challenge-A Swift 3.0のソリューション
import Cocoa
func findAll<T: Equatable, C: Collection>(items: C, itemToFind: T) -> [C.Index]? where C.Iterator.Element == T {
guard items.contains(itemToFind) else {
return nil
}
var result = Array<C.Index>()
var index = items.startIndex
for item in items {
if item == itemToFind {
result.append(index)
}
index = items.index(after: index) // index = index.successor()
}
return result
}
print("\nList the Indicies within 'items' of where 'itemToFind' was found")
let Indexes = findAll([items: [5, 3, 7, 3, 9], itemToFind: 3) // result expected: [1, 3]
let Indexes = findAll([items: ["c", "a", "b", "c", "a"], itemToFind: "b") // result expected: [1, 4]
let stringChars = ["Hello, playground!".characters]
let stringIndexes = findAll(items: stringChars, itemToFind: Character("l")) // result expected: [2, 3, 8]
コンパイラが私を助けていない、報告されたエラーのみが、私はどちらか書いたところ、「期待される 『』区切りのみprint文の後に4文に欠けている。 は、誰もが指摘することができます文句を言いますルーチン誤っやミス理解どのように入力するコールのパラメータを「のfindAll」関数に?