gpt4 book ai didi

使用开关快速设置值会出现错误 : expected initial value after '='

转载 作者:行者123 更新时间:2023-11-30 12:40:49 25 4
gpt4 key购买 nike

我想知道是否有任何捷径可以设置colorPredicate的值

枚举颜色{ 外壳黑色 外壳白色 }

func predicateForColor(color: Color, compoundWith compoundPredicate: NSPredicate?) -> NSPredicate {

// NOTE: if I use the code bellow to set the value of colorPredicate, will got error: expected initial value after '='.
// let colorPredicate =
// switch color {
// case .black: return predicateForBlack()
// case .white: return predicateForWhite()
// }

func getPredicateByColor(color: Color) -> NSPredicate {
switch color {
case .black: return predicateForBlack()
case .white: return predicateForWhite()
}
}

let colorPredicate = getPredicateByColor(color: color)

if let predicate = compoundPredicate {
return NSCompoundPredicate(andPredicateWithSubpredicates: [predicate, colorPredicate])
} else {
return colorPredicate
}
}


func predicateForBlack() -> NSPredicate {
print("get black predicate")
return NSPredicate(format: "color = black")
}

func predicateForWhite() -> NSPredicate {
print("get white predicate")
return NSPredicate(format: "color = white & someother condition")
}


print(predicateForColor(color: .black, compoundWith: nil))

最佳答案

let colorPredicate: NSPredicate = { (color: Color) -> NSPredicate in
switch color {
case .black: return predicateForBlack()
case .white: return predicateForWhite()
}
}(color)

更新

您的代码会产生错误,因为您需要编写:

let variable = { switch { ... } }()

而不是

let variable = switch { ... }

为了定义一个 block 并调用它,您不能从 switch 语句中进行分配。

字典方法

设置:

var lookup: [Color: NSPredicate] = [:]
lookup[.black] = NSPredicate(format: "color = black")
lookup[.white] = NSPredicate(format: "color = white")

用途:

let colorPredicate = lookup[color]

关于使用开关快速设置值会出现错误 : expected initial value after '=' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42244030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com