get到一个很好用的数据格式:元祖
- 元祖可以像Array一样将多个值放在一个集合里
- 元祖可以保存不同的数据类型
- 元祖在创建时就要指定好内部元素
- 元祖创建后不可修改
基于上述特点,用元祖实现方法的多个返回值再合适不过,能很好保证返回值的安全有效性。
实例如下,实现了字符串截取:
func yuanzuTest(str: String, findStr: String) -> (String.Index, Bool, Int) {
for (i, v) in str.enumerated() {
if "\(v)" == findStr {
return (str.index(str.startIndex, offsetBy: i), true, i)
}
}
return (str.startIndex, false, -1)
}
方法调用:
拿元祖的元素用.0 .1表示
let str = "https://www.google.com/search?newwindow=1&safe=active"
let yuanzu0 = yuanzuTest(str: str, findStr: "?")
let yuanzu1 = yuanzuTest(str: str, findStr: "&")
if yuanzu0.1 && yuanzu1.1 {
let start = str.index(yuanzu0.0, offsetBy: 1)
print(str[start..<yuanzu1.0])
}
打印结果: