我通过传递两个参数只使用了高级函数。有人可以帮助我使用三个参数,如下所示:
func advance<T : ForwardIndexType>(start: T, n: T.Distance, end: T) -> T
答案 0 :(得分:1)
该函数将start
索引增加n
个位置,但不增加
超出 end
索引。
示例:您希望将字符串截断为给定的最大长度:
func truncate(string : String, length : Int) -> String {
let index = advance(string.startIndex, length, string.endIndex)
return string.substringToIndex(index)
}
println(truncate("fooBar", 3)) // foo
println(truncate("fo", 3)) // fo
在第一次调用中,起始索引增加3个位置, 在第二个例子中只有两个。与
let index = advance(string.startIndex, length)
第二次调用会因运行时异常而崩溃,因为 字符串索引不得超出结束索引。