如何在swift中使用三个参数的高级功能?

时间:2015-05-08 16:08:26

标签: string function swift

我通过传递两个参数只使用了高级函数。有人可以帮助我使用三个参数,如下所示:

func advance<T : ForwardIndexType>(start: T, n: T.Distance, end: T) -> T

1 个答案:

答案 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)

第二次调用会因运行时异常而崩溃,因为 字符串索引不得超出结束索引。