说我有一个功能
func function1() -> (result:Bool, data:String){
return(false, "false")
}
我希望在一个if let语句中使用Bool的返回值,
if let value = function1 {
//code
} else {
//code
}
我怎样才能让它发挥作用?我似乎无法在swift文档中看到它,因为它只是一个返回的元组,你可以用点表示法访问它,但只有当你将返回值设置为元组时才这样 - 例如这会起作用
var value = function1()
if value.result {
////code
} else {
//code
}
有效,但如果可能,我想将其全部纳入实际的if else。有任何想法吗?
答案 0 :(得分:1)
您可以使用switch语句进行模式匹配。
switch function1() {
case (true, let string):
print(string)
default:
// else stuff here
}
答案 1 :(得分:1)
我建议使用计算属性。
func someFunc() {
if let value = computedProperty where value.result {
print(value.data)
} else {
// Do something else
}
}
var computedProperty: (result: Bool, data: String)? {
return (true, "FooBar")
}
或使用函数
func someFunc() {
if let value = anotherFunc() where value.result {
print(value.data)
} else {
// Do something else
}
}
func anotherFunc() -> (result: Bool, data: String)? {
return (true, "FooBar")
}
希望这会有所帮助:)
答案 2 :(得分:0)
在if
上使用此类型,您需要从您的函数中选择返回类型:
func function1() -> (result:Bool, data:String)? {
return(false, "false")
}
if let value = function1() {
//code
} else {
//code
}